ホームページ >データベース >mysql チュートリアル >COUNT(column) と COUNT(*): 各 SQL カウント関数をいつ使用する必要がありますか?
*SQL カウント関数: COUNT(column) と COUNT() の違いと適用シナリオ**
SQL データベースでは、カウント操作は基本的でよく使用される関数です。ただし、COUNT(column)
と COUNT(*)
の選択は結果に直接影響します。この記事では、これら 2 つのカウント関数の主な違いについて詳しく説明します。
COUNT(column)
この関数は、指定された列内の NULL 以外の値の数をカウントします。行の列に NULL 値が含まれている場合、その行はカウントから除外されます。この機能は、一意の値または特定のデータ ポイントをカウントする場合に役立ちます。
一方、COUNT(*)
関数は、列に NULL 値が含まれているかどうかに関係なく、選択したグループ内の行の総数をカウントします。 NULL 以外の値と NULL 値の両方をカウントします。
この違いは、NULL 値を含むテーブルを扱うときに明らかになります。たとえば、次のクエリを考えてみましょう:
<code class="language-sql">SELECT column_name, COUNT(column_name) FROM table GROUP BY column_name HAVING COUNT(column_name) > 1;</code>
このクエリは、column_name
の値が複数回出現する行グループを取得します。ただし、COUNT(column_name)
を COUNT(*)
に置き換えると、潜在的な問題が発生します。
COUNT(*)
を使用すると、クエリは、column_name
に NULL 値を含む行を含む、各グループ内のすべての行をカウントします。これにより、出力に NULL 値とその NULL 値の数を含む余分な行が生成される場合があります。
これを説明するために、次のデータを含むテーブルを考えてみましょう:
id | id2 |
---|---|
NULL | NULL |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | 1 |
1 | NULL |
NULL | NULL |
COUNT(id)
を使用した次のクエリは正しい結果を返します:
<code class="language-sql">SELECT id, COUNT(id) FROM table GROUP BY id HAVING COUNT(id) > 1;</code>
出力:
id | COUNT(id) |
---|---|
1 | 3 |
ただし、COUNT(*)
を使用すると、追加の行が取得されます:
<code class="language-sql">SELECT id, COUNT(*) FROM table GROUP BY id HAVING COUNT(*) > 1;</code>
出力:
id | COUNT(*) |
---|---|
1 | 3 |
NULL | 2 |
上に示すように、COUNT(*)
を使用した結果には、id
が NULL である追加の行とカウント 2 が含まれており、NULL id
値を含む行の数を示します。
したがって、COUNT(column)
と COUNT(*)
の選択は、特定のデータと望ましい結果によって異なります。 COUNT(column)
は NULL 以外の値をカウントするのに適していますが、COUNT(*)
は NULL 値を含む行を含むすべての行をカウントするのに使用されます。
以上がCOUNT(column) と COUNT(*): 各 SQL カウント関数をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。