mysql count()不起作用



susident_records

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

从上面的数据库中,我想计算行的数量具有标记的数量小于'< =' 5,并且具有arn value 不等于'!='"N。因此,对于上述示例,计数应为** 1 ,但使用我的代码,它是 2

代码:

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

理想情况下,您应该将字段类型更改为Integer,因为这就是存储的内容。如果不可能的话,您可以在查询时间施放现场:

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;

这里唯一真正的解决方案是将marks的字段类型从varchar更改为integer等数字数据类型。

一个丑陋的解决方法是

where cast(marks as unsigned) <= 5

最新更新