SQLのCOUNT(*)とCOUNT(列名)では結果が異なる

NULLを含むとき、COUNT(*)とCOUNT(列名)では結果が異なります。

Col1
10
(NULL)
50
(NULL)
40

このようなTBL1テーブルを例にします。

COUNT(*)はNULLを含めてカウントします。

SELECT COUNT(*) FROM TBL1

count
-----
    5

COUNT(列名)はNULLを含めません。

SELECT COUNT(COL1) FROM TBL1

count
-----
    3

SQL ゼロからはじめるデータベース操作』によると、

集約関数はNULLを除外する。ただし「COUNT(*)」は例外的にNULLを除外しない。

SQL ゼロからはじめるデータベース操作

ということでした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください