如何对MySQL联合查询计数?

要对联合进行计数,即获取UNION结果的计数,请使用以下语法-

SELECT COUNT(*)
FROM
(
SELECT yourColumName1 from yourTableName1
UNION
SELECT yourColumName1 from yourTableName2
) anyVariableName;

为了理解上述语法,让我们创建两个带有一些记录的表。创建表的查询如下-

mysql> create table union_Table1
-> (
-> UserId int
-> );

使用insert命令在表中插入一些记录。查询如下-

mysql> insert into union_Table1 values(1);

mysql> insert into union_Table1 values(10);

mysql> insert into union_Table1 values(20);

使用select语句显示表中的所有记录。查询如下-

mysql> select *from union_Table1;

以下是输出-

+--------+
| UserId |
+--------+
| 1      |
| 10     |
| 20     |
+--------+
3 rows in set (0.00 sec)

该查询创建第二个表。

mysql> create table union_Table2
-> (
-> UserId int
-> );

使用insert命令在表中插入记录。查询如下。

mysql> insert into union_Table2 values(1);

mysql> insert into union_Table2 values(30);

mysql> insert into union_Table2 values(50);

使用select命令显示表中的所有记录。查询如下-

mysql> select *from union_Table2;

以下是输出-

+--------+
| UserId |
+--------+
| 1      |
| 30     |
| 50     |
+--------+
3 rows in set (0.00 sec)

在两个表中,如果任何记录相同,则将仅考虑一次。这是依靠联合查询的查询。

mysql> select count(*) as UnionCount from
-> (
-> select distinct UserId from union_Table1
-> union
-> select distinct UserId from union_Table2
-> )tbl1;

以下是显示计数的输出。

+------------+
| UnionCount |
+------------+
| 5          |
+------------+
1 row in set (0.00 sec)