我想知道如何在MySQL数据库中找到所有NULL值,例如我试图显示所有没有平均值的用户。
这是MySQL代码。
SELECT COUNT(average) as num
FROM users
WHERE user_id = '$user_id'
AND average IS_NULL
答案 0 :(得分:33)
更通用的版本(不依赖于where子句,因此会限制您的整体结果):
SELECT
SUM(CASE WHEN average IS NULL THEN 1 ELSE 0 END) As null_num,
SUM(CASE WHEN average IS NOT NULL THEN 1 ELSE 0 END) AS not_null_num
FROM users
这不比其他答案提供的特定查询更好,但它可以用于使用限制where子句不切实际的情况(由于需要其他信息)......
答案 1 :(得分:14)
SELECT
COUNT(*) as num
FROM
users
WHERE
user_id = '$user_id' AND
average IS NULL
答案 2 :(得分:9)
此外,您可以:
Select Count(*) - Count(Average) as NullAverages
From Users
Where user_id = '$user_id'
答案 3 :(得分:5)
你走在正确的轨道上。从“IS_NULL”中删除“_”并将“COUNT(平均值)”更改为“COUNT(1)”,您将拥有它。
有关在MYSQL中使用NULL的更多信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
对于使用IS NULL,请参阅
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_is-null
答案 4 :(得分:3)
我可能会遗漏一些特定于mysql的东西,但这可以在sql server中运行
SELECT COUNT(*) as num
FROM users
WHERE user_id = '$user_id'
AND average IS NULL
答案 5 :(得分:2)
有点晚了,但你可以在MySQL 5.0.51中完成:
SELECT COUNT(*) AS total, COUNT(field1) AS notNullFields1
FROM table
GROUP BY field5, field6
问候。
答案 6 :(得分:0)
这是一个衬纸,也可以用于此问题:
SELECT COUNT(IF(average IS NULL,1,0))
FROM table;
这对我来说就像是一种魅力!