ホームページ >データベース >mysql チュートリアル >COUNT(column) と COUNT(*): SQL ではどちらをいつ使用する必要がありますか?
*SQL の COUNT(column) と COUNT() の違いの詳細な説明**
SQL クエリでは、count()
関数がデータ集計に使用されますが、一般的に使用される 2 つの形式 count(column)
と count(*)
の間には、微妙ですが重要な違いがあります。
COUNT(列): NULL 値を除外します
count(column)
構文は、指定された列内の NULL 以外の値の数をカウントし、NULL 列値を持つ行を事実上無視します。この機能は、列内の null 以外の値の数を決定する必要がある場合に便利です。
*COUNT(): NULL 値が含まれています**
対照的に、count(*)
は、NULL 値を含む行を含む、結果セット内の行数をカウントします。 count(column)
とは異なり、NULL を有効なカウント項目として扱います。この機能は、特定の列に欠損データが含まれているかどうかに関係なく、行の合計数を取得する必要がある場合に便利です。
違いを示す例
次のレコードを含む #bla
という名前のテーブルについて考えます:
<code class="language-sql">create table #bla(id int,id2 int) insert #bla values(null,null) insert #bla values(1,null) insert #bla values(null,1) insert #bla values(1,null) insert #bla values(null,1) insert #bla values(1,null) insert #bla values(null,null)</code>
count(column)
を使用して次のクエリを実行します:
<code class="language-sql">select count(id),count(id2) from #bla</code>
結果は次のとおりです:
<code>3 2</code>
このうち、count(id)
は id
列の 3 つの非 NULL 値のみをカウントしますが、count(id2)
は id2
列の 2 つの非 NULL 値をカウントします。
ただし、count(*)
を count(column)
に置き換えると、次のクエリに示すように 7 になります。
<code class="language-sql">select count(*) from #bla</code>この場合、
には、NULL 値が含まれているかどうかに関係なく、テーブルの 7 行が含まれています。 NULL 以外の値のカウントと行のカウントのこの区別は、欠損データを含むデータセットを扱う場合に特に重要になります。 count(*)
以上がCOUNT(column) と COUNT(*): SQL ではどちらをいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。