レコード数をカウントするには「COUNT」関数を使います。
ここでは MySQLコマンド「COUNT」の具体的な使い方を解説していきます。
目次
「COUNT」の基本
「COUNT」は、「SELECT」などと組み合わせて使います。
以下のようにすると、対象のレコード数をカウントできます。
SELECT COUNT(*) FROM テーブル名;
SELECT 文の詳しい使い方はこちら。
テーブル全体のレコード数をカウントする
実際にMySQLサーバーに接続し、動作を確認してみましょう。
あらかじめ「test」データベースの「users」テーブルに、以下のようにデータが保存されている例で進めていきます。
name | age |
佐藤 | 21 |
鈴木 | 25 |
田中 | 21 |
山田 | 32 |
山下 | (NULL) |
※「NULL」は値がないフィールド
データを保存するコマンド例
CREATE DATABASE test;
USE test;
CREATE TABLE users (name VARCHAR(100), age INT);
INSERT INTO users (name, age) VALUES ('佐藤', 21);
INSERT INTO users (name, age) VALUES ('鈴木', 25);
INSERT INTO users (name, age) VALUES ('田中', 21);
INSERT INTO users (name, age) VALUES ('山田', 32);
INSERT INTO users (name) VALUES ('山下');
CREATE DATABASE 文の詳しい使い方はこちら。
USE 文の詳しい使い方はこちら。
CREATE TABLE 文の詳しい使い方はこちら。
INSERT INTO 文の詳しい使い方はこちら。
それでは「users」テーブル全体のレコード数をカウントしてみましょう。コマンドは以下。
SELECT COUNT(*) FROM users;
コマンドを実行すると 以下のように結果が表示され、「users」テーブルには5件のデータが登録されていることがわかりました。
NULLのデータを除外してカウントする
指定したカラムに保存されている値が NULL のデータを除外してカウントすることもできます。
以下は「age」カラムの値が NULL のデータを除外してカウントする例。
SELECT COUNT(age) FROM users;
コマンドを実行すると、該当するデータが4件であることがわかりました。
条件に一致するレコード数をカウントする
今度は WHERE
も使って、条件に一致するレコード数をカウントしてみましょう。
以下のようにすると、「age」カラムの値が 25以上のレコード数をカウントできます。
SELECT COUNT(*) FROM users WHERE age >= 25;
コマンドを実行すると、該当するデータが2件であることがわかりました。
WHERE の詳しい使い方はこちら。
グループごとのレコード数をカウントする
今度は「GROUP BY」を使ってデータをグループ化し、それぞれのグループに含まれるレコード数をカウントしてみましょう。
以下のようにすると、「age」カラムのそれぞれの値ごとにレコード数をカウントすることができます。
SELECT age, COUNT(*) FROM users GROUP BY age;
コマンドを実行すると、以下のように結果が表示されました。
GROUP BY の詳しい使い方はこちら。
ここまでが「COUNT」の基本!
理解をさらに深めたい方は以下からの内容もご覧ください。
「COUNT」関数で条件を指定してカウントする
COUNT(*)
のようにアスタリスク(*
)を指定することで、すべてのレコードをカウントすることができますが、以下のように条件を加えて 該当するレコード数をカウントすることもできます。
SELECT COUNT(条件 OR NULL) FROM テーブル名;
条件 OR NULL
の箇所は、条件に当てはまれば TRUE
、当てはまらない場合は NULL
となります。
COUNT関数は NULL
の値をカウントしないことを応用しています。
「age」カラムの値が21と25のレコード数をカウントするコマンド例
SELECT COUNT(age = 21 OR NULL), COUNT(age = 25 OR NULL) FROM users;
まとめ
以上、MySQLコマンド「COUNT」の使い方でした!
ここまでの内容をまとめておきます。
- 「COUNT」でレコード数をカウントすることができる。
- カラム名を指定すると、そこに保存されている値が NULL のデータを除外してカウントすることができる。
- 「GROUP BY」を組み合わせると、グループごとのレコード数をカウントすることができる。