Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 难以获得简单查询的计数_Mysql_Count - Fatal编程技术网

Mysql 难以获得简单查询的计数

Mysql 难以获得简单查询的计数,mysql,count,Mysql,Count,我有一张有1118条记录的桌子。在这些记录中有一个字段标志,默认为空。其中556条记录的字段标志标记为true,而其余记录为NULL。 当我运行以下查询时: select count(*) from table_name where flag!='true' 我得到的结果是0。其中,实际结果应为1118-556,即562 我做错了什么 NULL从不与任何东西进行比较,甚至不能与另一个NULL进行比较 select count(*) from table_name where flag!='tr

我有一张有1118条记录的桌子。在这些记录中有一个字段
标志
,默认为空。其中556条记录的字段
标志
标记为true,而其余记录为NULL。 当我运行以下查询时:

select count(*) from table_name where flag!='true'
我得到的结果是0。其中,实际结果应为1118-556,即562


我做错了什么

NULL从不与任何东西进行比较,甚至不能与另一个NULL进行比较

select count(*) from table_name where flag!='true' OR flag IS NULL

这取决于除了
true
false
?)和null之外是否还有其他值

select
    count(CASE WHEN flag = 'true' THEN flag END) AS truecount,
    count(CASE WHEN flag = 'false' THEN flag END) AS falsecount
    count(*) - count(flag) AS NULLCount
from 
    table_name
最后,查看这些以了解COUNT和null/notnull值


在查询中,除非明确提及,否则NULL永远不会与任何布尔表达式匹配:

SELECT COUNT(*) FROM TABLE_NAME WHERE flag IS NULL

使用tinyint定义bool case字段以及1和0,0表示null case,1表示true。工作起来很有魅力。非常感谢你的帮助。非常感谢:)
SELECT COUNT(*) FROM TABLE_NAME WHERE flag IS NULL