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(*) は迅速に戻るよう最適化される。次に例を示す。

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 ...) 内ですべての式を連結する必要がある。










記事メニュー
目安箱バナー