MySQLでCOUNTを使ってレコード件数を取得する方法【初心者向け】
MySQLで【COUNT】を使ってレコード件数を取得する方法を初心者向けに解説した記事です。COUNTはSELECT文で指定した、レコードの行数を取得することができます。フィールドをどのように選択するか説明します。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
MySQLの初心者向けに、基本的な使い方を解説する記事です。
今回は、COUNTを使ってレコード件数を取得する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
実務でも、COUNTを利用することでイイねの数などの集計を行います。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
田島メンター!ページ数ってデータ件数を表示したい件数で割ったものですよね?
その通り!
データ件数を取得できるSQLってありますか?
それが今回紹介するCOUNT関数なんだ!さっそく見てみよう!
COUNTを使ってレコード件数を取得する方法
countの構文を使えば、selectで指定したレコードの行数を取得できます。
select count(フィールド名) from テーブル名;
実際にやりながら見ていきましょう。
今回は、このようなデータの入ったuser というテーブルを使います。
まずはidのレコード件数を取得してみます。
select count(id) from user;
5と出ました。
このように、レコードが何行あるかの数値を取得できました。
今回はidのフィールドを指定しましたが、usernameやorganization_idなど、ほかのフィールドを指定してももちろん構いません。
もちろん、*(すべて)で指定しても結果は変わりません。
select count(*) from user;
今回のテーブルでは同じく5とでました。
グループごとのレコード件数を取得する方法
グループごとのレコード件数を取得します。
集計するnice_tテーブルの中身
+--------+----------+
|id|name |nice |
+--------+----------+
|1 |Kirameki |NG |
|2 |Tech |NONE |
|3 |Suzuki |NONE |
|4 |Admin |IINE |
|5 |Tanaka |IINE |
|6 |Test |IINE |
+--------+----------+
集計結果
mysql> SELECT nice,COUNT(*) FROM nice_t GROUP BY nice;
+-------+----------+
| nice | COUNT(*) |
+-------+----------+
| IINE | 3 |
| NG | 1 |
| NONE | 2 |
+-------+----------+
3 rows in set (0.01 sec)
niceをcountで集計するコマンド解説
mysql> SELECT nice,COUNT(*) FROM nice_t GROUP BY nice;
SELECT nice,COUNT(*) FROM nice_t GROUP BY nice;を解説します。
SELECT niceでは、niceカラムを選択するという意味です。
,COUNT(*)では、niceカラムを集計します。
FROM nice_tでは、niceカラムが存在する、nice_tテーブルから集計することを指定しています。
GROUP BY niceでは、niceカラムでグルーピングしています。
集計した結果、niceカラムには次の3種類のデータが存在しました。
INE
NG
NONE
3種類のデータをそれぞれグルーピングした結果がCOUNTで集計されて、次のように各データ数が表示されます。
+-------+----------+
| nice | COUNT(*) |
+-------+----------+
| IINE | 3 |
| NG | 1 |
| NONE | 2 |
+-------+----------+
これは、IINEが3件、NGが1件、NONEが2件あったことを意味します。
条件式を組み合わせてレコード件数を取得する方法
ここでは、GROUP BYを利用して、集計したデータに条件式を組み合わせてカウントしてみます。
利用するデータ
mysql> SELECT nice,COUNT(*) FROM nice_t GROUP BY nice;
+-------+----------+
| nice | COUNT(*) |
+-------+----------+
| IINE | 3 |
| NG | 1 |
| NONE | 2 |
+-------+----------+
3 rows in set (0.01 sec)
表示結果
mysql> SELECT nice,COUNT(*) FROM nice_t GROUP BY nice HAVING COUNT(*) >= 2;
+-------+----------+
| nice | COUNT(*) |
+-------+----------+
| IINE | 3 |
| NONE | 2 |
+-------+----------+
2 rows in set (0.00 sec)
解説
SELECT nice,COUNT(*) FROM nice_t GROUP BY nice HAVING COUNT(*) >= 2;について解説します。
SELECT niceでは、niceカラムを選択するという意味です。
,COUNT(*)では、niceカラムを集計します。
FROM nice_tでは、niceカラムが存在する、nice_tテーブルから集計することを指定しています。
GROUP BY niceでは、niceカラムでグルーピングしています。
HAVING COUNT(*) >= 2では、COUNT(*)で集計した結果が2以上のデータだけをHAVING句で取得します。
集計した結果、niceカラムには次の3種類のデータが2件以上存在します。
+-------+----------+
| nice | COUNT(*) |
+-------+----------+
| IINE | 3 |
| NONE | 2 |
+-------+----------+
おわりに
MySQLのCOUNTを利用することで、個数の集計処理ができました。
MySQLのGROUP BYを利用することで、同じCOUNTの集計が可能になりました。
MySQLのHAVING句を利用することで、集計結果の数量に関して条件を付加できました。
きちんと半角で打っているかや、空欄の位置などに気をつけながら活用してみてください。
MySQLの基礎をさらに勉強したい場合は、MySQLのSUMを使って指定フィールドの合計値を計算する方法もあわせてご覧ください。
COUNTでデータ件数が返ってきました!
いいね!
これで、データ件数を表示したい件数で割ることができます。
カテゴリー(20)とか、カテゴリーとその件数を表示したい場合は、SQLをたくさん発行してしまうことになるので、どこかのテーブルにメモして取っておきたいね。
PHPを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!