🤖

【SQL】COUNT(*)とCOUNT(1)の違い

2025/02/07に公開

COUNT(*)とCOUNT(1)の違いが理解できなかったので解説します。

COUNT(*)

SQLの特殊構文。NULLを含め全ての行数をカウントする。

特徴
・全体の行数を知りたいときに使用する。
・カウントに最適化されており高速

COUNT(1)

各行の要素に対して、1という値を評価する(行の要素に関係なく行数の回数だけ「1」という値が評価される。python風に記述すれば"if 1:"でTrueが帰るのと同じイメージ。)。

COUNTで1という定数はカウントされる数なので、行数がそのまま帰る。
ただし環境によって最適化されていない可能性ため、通常はCOUNT(*)を使用することが多い。

COUNTとは

COUNT(列名)は指定した列の各行を評価し、NULL以外の値の総数を返すコードです。
通常はCOUNT("price")のように指定し欠損値以外をカウントしますが、COUNT(*)やCOUNT(1)で全体の行数を取得する使われ方も頻繁に目にします。

Discussion