次の SQL の結果は?(全 5 行、col が NULL の行が 2 行)
SELECT COUNT(*) AS a, COUNT(col) AS b FROM t;正答
- 5, 5
- 3, 3
- 3, 5
- 5, 3
解説
COUNT(*) は行そのものを数えるので NULL の有無に関係なく 5 になる。COUNT(col) は col が NULL でない行だけを数えるので 5 - 2 = 3 になる。選択肢 1 の 5, 5 は COUNT(col) も NULL を数えると思った誤り。「値が入っている件数」を知りたいときは COUNT(列名)、行数を知りたいときは COUNT(*) と使い分ける。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ