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 に答える
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サーバーで機能します

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 に答える