【MySQL】複数のテーブルからCOUNT(*)でレコード数を取得して合計する方法
複数のテーブルそれぞれのレコード数(COUNT(*))を取得し、その合計を求めたい場合は、UNION ALLを使用します。各テーブルのCOUNT(*)の結果をサブクエリとして縦に結合し、外側でSUM関数によって合計するのがポイントです。
基本構文
select sum(variableName.aliasName)
from
(
select count(*) as yourAliasName from yourTableName1
UNION ALL
select count(*) as yourAliasName from yourTableName2
) yourVariableName;サンプルデータベースで実装してみよう
それでは、上記の構文を実際に実装してみましょう。ここでは、複数のテーブルを含むサンプルデータベースを使用します。今回使うのは次の2つのテーブルです。
- userdemo
- wheredemo
テーブル「userdemo」の全レコードを表示
まず、「userdemo」テーブルの全レコードを表示するクエリです。
mysql> select *from userdemo;
出力結果は以下の通りです。
+--------+----------+------------------+ | UserId | UserName | RegisteredCourse | +--------+----------+------------------+ | 1 | John | Java | | 2 | Larry | C | | 3 | Carol | C++ | | 4 | Mike | C# | +--------+----------+------------------+ 4 rows in set (0.08 sec)
テーブル「wheredemo」の全レコードを表示
続いて、「wheredemo」テーブルの全レコードを表示するクエリです。
mysql> select *from wheredemo;
出力結果は以下の通りです。
+------+---------+ | Id | Name | +------+---------+ | 101 | Maxwell | | 110 | David | | 1000 | Carol | | 1100 | Bob | | 115 | Sam | +------+---------+ 5 rows in set (0.20 sec)
両方のテーブルのCOUNT(*)を合計するクエリ
上記2つのテーブルに対してCOUNT(*)を実行し、その合計を求めるクエリがこちらです。
mysql> select sum(tbl.EachTableCount)
-> from
-> (
-> select count(*) as EachTableCount from userdemo
-> UNION ALL
-> select count(*) as EachTableCount from wheredemo
-> )tbl;出力結果は以下の通りです。
+-------------------------+ | sum(tbl.EachTableCount) | +-------------------------+ | 9 | +-------------------------+ 1 row in set (0.00 sec)
このように、UNION ALLで各テーブルの件数を結合したサブクエリを作成し、SUM関数で合計することで、複数テーブルの総レコード数を1つのクエリで簡単に取得できます。テーブルが3つ以上の場合も、同様にUNION ALLのブロックを追加していくだけで対応可能です。
-
複数テーブルのデータを組み合わせてMySQLビューを作成する方法(UNION演算子の活用)
MySQLでは、UNION演算子を使うことで、2つ以上のSELECT文の結果セットを1つに結合できます。この特性を利用すれば、複数のテーブルから取得したデータをまとめたビュー(VIEW)を簡単に作成できます。ここでは、以下のような2つの基本テーブル「Student_info」と「Student_detail」を例に説明します。サンプルテーブル:Student_infomysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address |
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected