私は本当にこのためのexplinationが必要です。あなたは、次の表を持っていると言う:上記の表is_complete
でSQLカウントケースelse 0対NULL
Columns:
id int(11) AI PK
user_id int(11)
is_complete int(11)
今すぐ1
または0
のいずれかであることができるあなたは、次のSQL
文を作成するように、いくつかのカウントを行いたい:
COUNT(CASE
WHEN is_complete = 0 THEN 1
ELSE 0
END) AS not_complete
この結果は次のようになります:
(間違っている)3210
は今はまったく同じ文に変更します。
COUNT(CASE
WHEN is_complete = 0 THEN 1
ELSE null
END) AS not_complete
注アイブがnull
に0
を変更すると、次のような結果を得る:
いくつかの徹底的なテストの後、1.不正確なステートメントは何があっても実際にすべてをカウントすることがわかります。
私の質問はなぜですか?
、それはそれはどのように動作するかです。 '0'はヌルではなく、' 1'はヌルではなく、 'NULL'以外のすべての値はカウントされます。 'THEN 1 ELSE 0 END'を使うには' COUNT'の代わりに 'SUM'を使います。 – Lamak
Sum()... – Strawberry
なぜis_complete = 0のテーブルからcount(*)を使わないのですか? – Pirate