19

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

这是 MySQL 代码。

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

7 回答 7

36

更通用的版本(不依赖于 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 子句不切实际的情况(由于需要其他信息)...

于 2010-06-17T01:46:01.857 回答
18
SELECT
    COUNT(*) as num
FROM
    users
WHERE
    user_id = '$user_id' AND
    average IS NULL
于 2010-06-16T22:55:30.117 回答
10

此外,您还可以:

Select Count(*) - Count(Average) as NullAverages
From Users
Where user_id = '$user_id' 
于 2010-06-16T22:56:44.857 回答
6

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

SELECT COUNT(IF(average IS NULL,1,0))
FROM table; 

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

于 2018-08-24T16:53:42.650 回答
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/en/comparison-operators.html#operator_is-null

于 2010-06-16T22:57:00.253 回答
3

我可能会遗漏一些特定于 mysql 的内容,但这适用于 sql server

SELECT COUNT(*) as num
FROM users
WHERE user_id = '$user_id'
AND average IS NULL
于 2010-06-16T22:56:10.427 回答
3

有点晚了,但你可以在 MySQL 5.0.51 中做到:

SELECT COUNT(*) AS total, COUNT(field1) AS notNullFields1
FROM table
GROUP BY field5, field6

问候。

于 2011-09-21T17:39:52.127 回答