要对联合进行计数,即获取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)