如何在MySQL中计算NULL值?

时间:2010-06-16 22:53:48

标签: mysql aggregate-functions

我想知道如何在MySQL数据库中找到所有NULL值,例如我试图显示所有没有平均值的用户。

这是MySQL代码。

SELECT COUNT(average) as num
FROM users
WHERE user_id = '$user_id'
AND average IS_NULL

7 个答案:

答案 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; 

这对我来说就像是一种魅力!