如何在MySQL中计算NULL值?

abb*_*bbr 16 mysql aggregate-functions

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

这是MySQL代码.

SELECT COUNT(average) as num
FROM users
WHERE user_id = '$user_id'
AND average IS_NULL
Run Code Online (Sandbox Code Playgroud)

irc*_*ell 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
Run Code Online (Sandbox Code Playgroud)

它并不比其他答案提供的特定查询更好,但它可以用于使用限制where子句不切实际的情况(由于需要其他信息)...


Ham*_*ite 14

SELECT
    COUNT(*) as num
FROM
    users
WHERE
    user_id = '$user_id' AND
    average IS NULL
Run Code Online (Sandbox Code Playgroud)

  • “count(column)”不会真正计算列值为“null”的行 (2认同)

Cha*_*ana 9

此外,您可以:

Select Count(*) - Count(Average) as NullAverages
From Users
Where user_id = '$user_id' 
Run Code Online (Sandbox Code Playgroud)


小智 6

这是一个也可用于解决此问题的单衬:

SELECT COUNT(IF(average IS NULL,1,0))
FROM table; 
Run Code Online (Sandbox Code Playgroud)

它对我来说就像一个魅力!


Jac*_*cob 5

您走在正确的轨道上。从“ IS_NULL”中删除“ _”,并将“ COUNT(average)”更改为“ 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/zh-CN/comparison-operators.html#operator_is-null