ホームページ  >  記事  >  データベース  >  COUNT(*) と COUNT(column_name): MySQL の違いは何ですか?

COUNT(*) と COUNT(column_name): MySQL の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 06:39:11960ブラウズ

COUNT(*) vs. COUNT(column_name): What's the Difference in MySQL?

COUNT(*) と COUNT(column_name) の違いを理解する

MySQL には、COUNT(*) と COUNT(列名)。どちらの関数も結果セット内の行数をカウントしますが、NULL 値の処理が異なります。

COUNT(*)

  • すべての行をカウントします。
  • 構文: COUNT(*)

COUNT(column_name)

  • 指定された列 (column_name) が NULL ではない行のみをカウントします。
  • 構文: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。