MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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(*)を使用するようにしましょう。

  1. 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コマンドを使って、いくつかの

  2. 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