次の SQL の結果は?(v の値は 'a', 'b', NULL の 3 行)
SELECT COUNT(*) AS n FROM t WHERE v <> 'a';正答
- 2
- 3
- 0
- 1
解説
WHERE は条件が真の行だけを通す。'b' <> 'a' は真だが、NULL <> 'a' は真でも偽でもない「不明」になり、行は通らない。したがって数えられるのは 'b' の 1 行だけ。選択肢 1 の 2 は「NULL は 'a' ではないから含まれる」と考えた誤りで、NULL の行も含めたいなら WHERE v <> 'a' OR v IS NULL と明示する必要がある。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ