MySQL 如何在联合查询中进行计数
要在联合查询上进行计数,即获取UNION结果的计数,请使用以下语法−
SELECT COUNT(*)
FROM
(
SELECT yourColumName1 from yourTableName1
UNION
SELECT yourColumName1 from yourTableName2
) anyVariableName;
要理解上述语法,让我们创建两个带有一些记录的表。创建表的查询如下所示−
mysql> create table union_Table1
-> (
-> UserId int
-> );
Query OK, 0 rows affected (0.47 sec)
使用Insert命令在表中插入一些记录。查询如下−
mysql> insert into union_Table1 values(1);
Query OK, 1 row affected (0.18 sec)
mysql> insert into union_Table1 values(10);
Query OK, 1 row affected (0.12 sec)
mysql> insert into union_Table1 values(20);
Query OK, 1 row affected (0.09 sec)
使用select语句显示表中的所有记录。查询如下−
mysql> select *from union_Table1;
以下是输出结果 −
+--------+
| UserId |
+--------+
| 1 |
| 10 |
| 20 |
+--------+
3 rows in set (0.00 sec)
创建第二个表的查询。
mysql> create table union_Table2
-> (
-> UserId int
-> );
Query OK, 0 rows affected (0.69 sec)
使用插入命令在表中插入记录。查询如下。
mysql> insert into union_Table2 values(1);
Query OK, 1 row affected (0.12 sec)
mysql> insert into union_Table2 values(30);
Query OK, 1 row affected (0.26 sec)
mysql> insert into union_Table2 values(50);
Query OK, 1 row affected (0.13 sec)
使用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)
阅读更多:MySQL 教程
极客教程