COUNT(*) と COUNT(column_name) の違いを理解する
MySQL には、COUNT(*) と COUNT(列名)。どちらの関数も結果セット内の行数をカウントしますが、NULL 値の処理が異なります。
COUNT(*)
COUNT(column_name)
主な違い
Feature | COUNT(*) | COUNT(column_name) |
---|---|---|
NULL Values | Includes rows with NULL values | Excludes rows with NULL values |
Performance | May be slower in some cases even if the column has no NULL values | Generally slower due to the need to check each value |
COUNT(1)
COUNT(1) は COUNT(*) と同等です。これは、1 を NULL にすることはできないためです。したがって、結果セット内のすべての行もカウントされます。
例
「table1」という名前の次のテーブルについて考えてみましょう。
CREATE TABLE table1 (x INT NULL); INSERT INTO table1 (x) VALUES (1), (2), (NULL);
今3 つのカウント関数の結果を比較してみましょう:
SELECT COUNT(*) AS a, COUNT(x) AS b, COUNT(1) AS c FROM table1;
結果:
a b c 3 2 3
ご覧のとおり、COUNT() はすべてをカウントします。 "x" 列の NULL 値に関係なく、3 行になります。 COUNT(x) は NULL 値を持つ行を除外し、カウントは 2 になります。 1 を NULL にすることはできないため、COUNT(1) は COUNT() と同じ結果を返します。
以上がCOUNT(*) と COUNT(column_name): MySQL の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。