【问题标题】:MYSQL <= operator not working for values of 9999MYSQL <= 运算符不适用于 9999 的值
【发布时间】: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


【解决方案1】:

您能否发布完整的查询,因为它不清楚什么是 SSR 和 FD 以及一些示例数据。由于 where 子句中的一些其他条件,您从 SPP 获得的 minScore 和 MaxScore 是否可能(非常确定)可能与您的预期不同

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2018-02-24
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多