Mysql Count()不起作用

时间:2017-11-24 09:50:27

标签: mysql

students_records

+----+-----+-----+-------+
| Sr | SRN | ARN | Marks |
+----+-----+-----+-------+
| 1  | ge  | aj  |  10   |
| 2  | ge  | bd  |   4   |
+----+-----+-----+-------+  

从上面的数据库中,我想计算标记小于'< =' 5并且ARn值不等于的数量'!='“N。所以对于上面的例子,计数应该是** 1 但是我的代码是 2

代码:

SELECT COUNT(Sr) AS Sr FROM students_records WHERE ARN != 'N' AND Marks <= '5'

2 个答案:

答案 0 :(得分:0)

此处唯一真正的解决方案是将marks的字段类型从varchar更改为数字数据类型,如integer

一个丑陋的解决方法是

where cast(marks as unsigned) <= 5

答案 1 :(得分:0)

理想情况下,您应该将字段类型更改为整数,因为它的存储内容是什么。如果这不可能,您可以在查询时强制转换字段,如下所示:

SELECT COUNT(Sr) AS Sr FROM t WHERE ARN != 'N' AND cast(Marks AS UNSIGNED) <= '5';

但是当你获得更大的数据集时,这可能会很慢。

您也可以通过删除"5"周围的引号来隐式执行转换:

SELECT COUNT(Sr) AS Sr FROM t WHERE ARN != 'N' AND Marks <= 5;