助け合いフォーラム
OSS-DB Silver(Ver3.0)
問題ID : 35419
問題を開く
「club」テーブルは次のように構成されている。
以下のSQL文を実行した場合、取得される結果として正しいものはどれか。
INSERT INTO club VALUES(6, 'バレー部'), (7, '卓球部');
UPDATE club SET name = NULL WHERE id = 2;
DELETE FROM club WHERE id = 4 OR i...
この問題はプレミアムコンテンツです。
NULLを含むデータのcount(*)の結果について
m
muraki06
投稿日 2024/11/24
解説に
SELECT count(*) FROM club WHERE name NOT IN ('野球部', 'サッカー部');
NOT IN演算子は「副問い合わせの結果全てと一致しないかどうか」を判定します。
「club」テーブルで「name」カラムの値が「野球部」「サッカー部」と一致しないのは、「弓道部」「卓球部」「NULL」ですが、NULLは無視されます。
したがって正解は
・2
です。
とありますが、count(*)はnullも含めた件数をカウントする認識のため3が正解だと思います。
実機で試しても3になります。解説の誤りでしょうか?
test=> select * from club;
id | name
----+------------
1 | 野球部
2 |
3 | 弓道部
5 | サッカー部
7 | 卓球部
(5 行)
test=> SELECT count(*) FROM club WHERE name NOT IN ('野球部', 'サッカー部');
count
-------
3
(1 行)
2024/11/25 14:12
念のための確認なのですが、お手元の環境で以下のSQLを実行したらどうなりますか?
select id from club where name IS NULL;
select id from club where name IS NOT NULL;
ここで 2
, 1, 3, 5, 7
が返ってくるので間違い無いですよね?
コメント
この投稿に対して返信しませんか?
m muraki06
2024/11/25 14:32
arashi1977さん、返信ありがとうございます。 確認してみたところis nullのSQLの結果が0行となり、NULLではなく 空白になっていました。 内容を修正したら2行になりましたので解説の内容が正しいことが確認できました。 ありがとうございました。