如何在MySQL查询中使用COUNT CASE和WHEN语句,在一个MySQL查询中数据为NULL且何时不为NULL时进行计数?
答案 0 :(得分:71)
使用:
SELECT SUM(CASE
WHEN t.your_column IS NULL THEN 1
ELSE 0
END) AS numNull,
SUM(CASE
WHEN t.your_column IS NOT NULL THEN 1
ELSE 0
END) AS numNotNull
FROM YOUR_TABLE t
这将总结列NULL&整个表不是NULL。根据需要,您可能需要GROUP BY子句。
答案 1 :(得分:0)
您可以利用COUNT只计算非空值的事实:
SELECT COUNT(IFNULL(t.your_column, 1)) AS numNull,
COUNT(t.your_column) AS numNotNull
FROM YOUR_TABLE t
另一种方法是利用逻辑条件被评估为数字0和1的事实,因此这也将起作用:
SELECT IFNULL(SUM(t.your_column IS NULL), 0) AS numNull,
IFNULL(SUM(t.your_column IS NOT NULL), 0) AS numNotNull
FROM YOUR_TABLE t
请注意,如果未选择任何行(即表为空或where条件排除所有行),SUM将返回NULL,这就是IFNULL语句的原因。