MySQLでテーブルの全行数を正確にカウントする方法(COUNT(*)の使い方)
MySQLでテーブル内のすべての行を正確にカウントしたい場合は、集計関数であるCOUNT(*)を使用します。COUNT(*)を使えば、NULL値が含まれる行や重複データも含めて、テーブル内の全行数を正確に取得できます。
COUNT(*)の基本構文
行数をカウントするための基本的な構文は以下のとおりです。
select count(*) as 任意の別名 from テーブル名;
サンプルテーブルの作成
実際の動作を確認するために、まずサンプルテーブルを作成しましょう。テーブルを作成するクエリは次のとおりです。
mysql> create table CountAllRowsDemo
-> (
-> Id int,
-> Name varchar(10),
-> Age int
-> );
Query OK, 0 rows affected (1.49 sec)
レコードの挿入
続いて、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。クエリは以下のとおりです。
mysql> insert into CountAllRowsDemo values(1,'John',23);
Query OK, 1 row affected (0.15 sec)
mysql> insert into CountAllRowsDemo values(101,'Carol',21);
Query OK, 1 row affected (0.17 sec)
mysql> insert into CountAllRowsDemo values(201,'Sam',24);
Query OK, 1 row affected (0.13 sec)
mysql> insert into CountAllRowsDemo values(106,'Mike',26);
Query OK, 1 row affected (0.22 sec)
mysql> insert into CountAllRowsDemo values(290,'Bob',25);
Query OK, 1 row affected (0.16 sec)
mysql> insert into CountAllRowsDemo values(500,'David',27);
Query OK, 1 row affected (0.16 sec)
mysql> insert into CountAllRowsDemo values(500,'David',27);
Query OK, 1 row affected (0.19 sec)
mysql> insert into CountAllRowsDemo values(NULL,NULL,NULL);
Query OK, 1 row affected (0.23 sec)
mysql> insert into CountAllRowsDemo values(NULL,NULL,NULL);
Query OK, 1 row affected (0.13 sec)
この例では、重複したレコードやNULL値のみのレコードも意図的に含めています。これにより、COUNT(*)がこうした行も正しくカウントできることを確認できます。
テーブルの内容を確認する
SELECT文を使って、テーブル内の全レコードを表示してみましょう。クエリは以下のとおりです。
mysql> select *from CountAllRowsDemo;
実行結果は以下のとおりです。
+------+-------+------+
| Id | Name | Age |
+------+-------+------+
| 1 | John | 23 |
| 101 | Carol | 21 |
| 201 | Sam | 24 |
| 106 | Mike | 26 |
| 290 | Bob | 25 |
| 500 | David | 27 |
| 500 | David | 27 |
| NULL | NULL | NULL |
| NULL | NULL | NULL |
+------+-------+------+
9 rows in set (0.00 sec)
この時点で、テーブルには合計9行のレコードが登録されていることがわかります。
COUNT(*)で正確な行数を取得する
それでは、集計関数COUNT(*)を使って、テーブル内の正確な行数をカウントしてみましょう。クエリは以下のとおりです。
mysql> select count(*) as TotalNumberOfRows from CountAllRowsDemo;
実行すると、次のように行数が出力されます。
+-------------------+
| TotalNumberOfRows |
+-------------------+
| 9 |
+-------------------+
1 row in set (0.00 sec)
まとめ
このように、COUNT(*)を使用すれば、NULL値や重複データを含むすべての行を正確にカウントできます。なお、「COUNT(列名)」のように特定の列を指定した場合はNULL値が除外されてしまうため、テーブルの全行数を取得したい場合は必ずCOUNT(*)を使用するようにしましょう。
-
MySQLの1つのクエリで複数テーブルの行数を同時にカウントする方法
はじめに MySQLでは、サブクエリ(スカラーサブクエリ)を組み合わせることで、1つのSELECT文で複数のテーブルの行数を同時に取得できます。この記事では、実際にテーブルを作成し、データを挿入して、2つのテーブルの行数を1回のクエリでカウントする手順を解説します。 手順1:1つ目のテーブルを作成する まず、以下のようにテーブルを作成します。 mysql> create table DemoTable1 ( Name varchar(40) ); Query OK, 0 rows affected (0.81 sec) レコードの挿入 INSERTコマンドを使って、いくつかの
-
MySQLでJOINを使用して相互関係のある行をカウントするクエリの書き方
MySQLで、ある値が2つの列に相互関係を持って存在する行(例えば「90」がValue1とValue2の両方に関わる行)をカウントしたい場合、集計関数 COUNT(*) と自己結合(JOIN)を組み合わせることで実現できます。サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable1543 -> ( -> Value1 int, -> Value2 int -> ); Query OK, 0 rows affected (1.36 sec)レコードの挿入次に、INS