MySQL @Wiki 実用リファレンス
COUNT
最終更新:
my-sql
-
view
COUNT
COUNT(expr)
SELECT ステートメントで取り出されたレコードのうち、NULL 以外の値の数のカウントを返す。
mysql> SELECT student.student_name,COUNT(*) -> FROM student,course -> WHERE student.student_id=course.student_id -> GROUP BY student_name;
COUNT(*) は、レコードに NULL 値が含まれているかどうかにかかわらず、取り出されたレコード数のカウントを返すという点で多少異なる。
SELECT で 1 つのテーブルから値を取り出し、他のカラムからは値を取り出さず、かつ WHERE 節がない場合、COUNT(*) は迅速に戻るよう最適化される。次に例を示す。
SELECT で 1 つのテーブルから値を取り出し、他のカラムからは値を取り出さず、かつ WHERE 節がない場合、COUNT(*) は迅速に戻るよう最適化される。次に例を示す。
mysql> SELECT COUNT(*) FROM student;
この最適化は、MyISAM テーブルと ISAM テーブルにのみ適用される。これは、この 2 つのテーブル型では正確なレコードカウントが格納され、迅速にアクセスできるためである。トランザクションストレージエンジン(InnodB, BDB)の場合、複数のトランザクションが発生し、それぞれがカウントに影響する場合があるため、正確なレコードカウントの格納はより難しくなる。
COUNT(DISTINCT expr,[expr...])
NULL 以外の異なる各値の数のカウントを返す。
mysql> SELECT COUNT(DISTINCT results) FROM student;
MySQL では、式のリストを指定することによって、NULL を含まない、重複のない式の組み合せの数を得ることができる。 SQL-99 では、COUNT(DISTINCT ...) 内ですべての式を連結する必要がある。