【发布时间】:2013-09-13 07:32:25
【问题描述】:
好的,伙计们。我有一个奇怪的 MYSQL 比较运算符问题。我有两张表,一张(Table1)包含一个包含上下分数范围(MinScore,MaxScore)和描述字段的值列表。 MinScore 和 MaxScore 的值存储为 Int(11)。
然后我有第二个表(表 2),其中包含将分数与第一个表进行比较以加入性能描述的记录。
Table1中Score的最大值为9999(即可以输入的最大值)。
如果我在 Table2 中有一个值为 9999 的值,并且我使用了如下所示的连接,那么我无法从 Table1 中检索值。
i.e.: .... ON (Table2.Score>=Table1.MinScore AND Table2.Score
如果我将 Table2.Score 更改为 9998,它会起作用。 如果我将 Table1.MaxScore 更改为 6000 并将 Table2.Score 更改为 6000,它可以工作。 如果我将 Table1.MaxScore 更改为 10000 并将 Table2.Score 更改为 9999,它会失败。
导致失败的 9999 是什么原因?有任何想法吗?它不是浮点数,也不是小数。这两个值都是 INT(11) 字段。
【问题讨论】:
-
您是否有一些示例数据,或者可能设置了一个 fiddle 来证明这一点?
-
老实说,这是一个连接多个表的非常长的查询,因此很难复制。真的很奇怪,它适用于任何低于 9999 的值都很好,但是当值为 9999 时它会失败。我会说 Table1.Score 实际上是一个 Coalesce 值,例如 COALESCE(Score1, Score2, NULL)。但同样,让我悲伤的只是 9999。
-
在没有看到查询/数据的情况下,我唯一能想到的可能是有人将“9999”用作幻数?
-
左连接(选择 tmp1.sDBID、assessmentDate、assessmentType、tmp1.assessmentCode、scoreCode、rawScore、scaleScore、altScore、comment、tmp2.MaximumScore FROM studentstaarresults tmp1
-
您能否开始删除部分查询,直到找到重现问题的最小可能?
标签: mysql comparison operator-keyword