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 ゼロからはじめるデータベース操作

ということでした。

コメントを残す

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.