我在一个表中有39条记录,其中包含以下查询
SELECT COUNT(`id`) FROM `table` WHERE `status` = 1
现在我希望在某个最大十进制值为X
时计算结果SELECT COUNT(`id`) FROM `table` WHERE `status` = 1 AND `price` <= 247504.91
在这种特殊情况下, 247504.91 是该表的最高价格值
第一个查询返回39,但第二个返回38,似乎它排除了最后一条记录,或者我不确定,但我现在有点陷入困境,为什么会发生这种情况?我做错了什么?。
修改
价格字段的数据类型是十进制
答案 0 :(得分:0)
如果您的某个价格值为NULL,则算术运算符不会对它们起作用,因此它们将不会被考虑在总记录数中。使用以下查询为每个null值
输入值0UPDATE `table` SET `price` = 0 WHERE `price` IS NULL
此外,对于写这样的查询,你应该有一个嵌套查询来获取列的最大值,而不是使用硬编码的数字。这样,如果最大更改,您不必返回并更新查询,加上它不会出现人为错误(输入错误的数字)。
SELECT COUNT(`id`) FROM `table` WHERE `status` = 1 AND `price` <=
(SELECT MAX(`price`) FROM `table` WHERE `status` = 1)