COUNT(*) と COUNT(column_name): MySQL の違いを理解する
MySQL では、COUNT() 関数が便利な機能を提供します。結果セット内の行数をカウントする方法。ただし、この関数には、COUNT(*) と COUNT(column_name) という異なる結果が生じる可能性のある 2 つのバリエーションがあります。これら 2 つのバリアントの区別を理解することは、正確なデータ集計と最適化にとって重要です。
COUNT(*): NULL 値に関係なく行をカウント
COUNT( ) は、結果セット内のすべての行を単純にカウントする単純な関数です。これには、任意の列に NULL 値を含む可能性のある行が含まれます。これは、COUNT() が、データの内容に関係なく、すべてのレコードの合計数を提供することを意味します。
COUNT(column_name): 特定の列内の非 NULL 値のカウント
COUNT() とは対照的に、COUNT(column_name) は特に指定された列内の NULL 以外の値をカウントします。この関数には、column_name の値が null ではない行のみが含まれます。したがって、その列内に NULL 値がある場合、COUNT(column_name) は COUNT() よりも低いカウントを返す可能性があります。
例: 違いのデモ
違いを説明するために、次の表を考えてみましょう。
CREATE TABLE table1 (x INT NULL); INSERT INTO table1 (x) VALUES (1), (2), (NULL);
次の実行query:
SELECT COUNT(*) AS a, COUNT(x) AS b, COUNT(1) AS c FROM table1;
は次の結果を返します:
a b c 3 2 3
このシナリオでは、COUNT() (列 "a") は 3 行すべてをカウントするため 3 を返します。これには、列「x」に NULL 値が含まれるものも含まれます。一方、COUNT(x) (列 "b") は、列 "x" に NULL 以外の値がある行のみをカウントするため、2 を返します。 COUNT(1) (列 "c") は COUNT() と同等ですが、3 も返します。
COUNT(*) と COUNT(column_name) の違いを理解することで、効果的に次のことが可能になります。 MySQL クエリのデータを集計して分析します。
以上がCOUNT(*) と COUNT(column_name): MySQL ではどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。