【MySQL】複数条件で絞った件数を取得する

バックエンド

複数条件で集計

コード例は、「usersテーブルから、nameが空 かつ genderがmaleのレコード数を取得する」実行命令です。

その1

# AND条件
select count(name="" and gender="male" or null) from users;

# OR条件
select count(name="" or gender="male" or null) from users;

count(*)ではないcount(xxx)は、Null以外をカウントします。
上記SQLの方針としては、条件に合致するものをtrue、合致しないものをnullで返しています。

その2

select count(*) from users where name="" and gender="male";

全件カウントしてから、whereで絞っているパターン。その1のやり方の方がスマートかも。
結果はちゃんと出ます。

独立した複数条件を同時集計する

別のカウントを同時に出すこともできます。
下記コードでは、「1. nameが空の件数、2. genderがmaleの件数、3. nameが空かつgenderがmaleの件数」を出力します。

select count(name="" or null), count(gender="male" or null), count(name="" and gender("male") or null) from users;
タイトルとURLをコピーしました