ホームページ >データベース >mysql チュートリアル >COUNT(*) と COUNT(Column): SQL の違いは何ですか?
*SQL の COUNT () と COUNT (列名): 微妙だが重要な違い**
SQL クエリを使用する場合、COUNT(*) や COUNT(column name) などのさまざまな集計関数の微妙な点を理解することが重要です。この記事は、これら 2 つの関数間の微妙だが重要な違いを明確にすることを目的としています。
*COUNT (列名) と COUNT () の比較**
COUNT (列名) は、指定された列内の null 以外の値の数をカウントします。この関数は、指定された基準を満たす列に存在する値の数を決定します。
一方、COUNT(*) は、null 値が含まれているかどうかに関係なく、テーブル内のすべての行をカウントします。これは、テーブル内のすべての行を考慮し、実質的に行の合計数を返すため、「ユニバーサル数量指定子」と呼ばれることもあります。
実践例
テーブル内の重複する値の数を数える次のクエリについて考えてみましょう:
<code class="language-sql">select column_name, count(column_name) from table group by column_name having count(column_name) > 1;</code>
このクエリでは、COUNT(column_name) 関数を使用して、指定された列 (column_name) 内の null 以外の値の出現数をカウントします。 null 以外の値が複数回出現した場合、その行は重複しているとみなされます。
このクエリで COUNT(column_name) 関数を COUNT(*) に置き換えると、結果は若干異なります。変更されたクエリは、column_name 列の null 値とテーブル内の行の総数 (null 値を含む行を含む) を含む追加の行を結果セットに返します。
デモ
この違いを説明するために、次の SQL コードを考えてみましょう:
<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) select count(*),count(id),count(id2) from #bla</code>
このクエリの実行結果は次のとおりです:
<code>7 3 2</code>
COUNT(*) 関数は、テーブル内の行の総数を示す 7 を返します。 COUNT(id) 関数は 3 を返します。これは、id 列に null 以外の値を持つ行の数を表します。 COUNT(id2) 関数は 2 を返し、id2 列に null 以外の値を持つ行の数を示します。
要約すると、COUNT(列名) と COUNT() の主な違いは、COUNT() ではカウントに null 値が含まれるのに対し、COUNT(列名) では null 値が除外されることです。この違いを理解することは、正確なデータ分析とクエリの最適化にとって重要です。
以上がCOUNT(*) と COUNT(Column): SQL の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。