如何在mysql中使用Union All计算总记录数

时间:2017-01-20 06:56:42

标签: mysql

select count(*) from ((select count(*) from employee )
 union ALL (select count(*) from events)) as total

这是我的查询我试图通过给出两个查询来找到ttoal记录 这个查询

 `select count(*) from employee` 

给出300记录和

select count(*) from events 

当我尝试计算总记录时给出100,然后它总是给出2条记录可以任何一个告诉我如何通过给出查询来计算总记录

3 个答案:

答案 0 :(得分:1)

您可以直接将两个计数加在一起,不需要UNION查询:

SELECT (SELECT COUNT(*) FROM employee) + (SELECT COUNT(*) FROM events) AS total

请注意,这将起作用,因为您使用了UNION ALL,它保留了查询每一侧的所有记录。如果您想使用UNION,那么它将如下所示:

SELECT COUNT(*) AS total
FROM
(
    SELECT * FROM employee
    UNION ALL
    SELECT * FROM events
) t

但是这只有在两个表具有相同数量(和理想类型)列的情况下才有效。在任何情况下我都可能选择第一个选项。

答案 1 :(得分:0)

select 
    count(*) result.union_total 
from (
    (select 1 from table1) 
    union all 
    (select 1 from table2)
) result

答案 2 :(得分:0)

使用此命令:

SELECT
    COUNT(*) AS total
FROM
  (SELECT * FROM db_domains where id=695
   UNION ALL
   SELECT * FROM db_domains where id=694
  ) AS A;

结果:总数:2(根据我的sql表)

请确保:

1.使用的SELECT语句具有相同的列数。

否则您将收到此错误: 错误代码:1222。使用的SELECT语句具有不同的列数

2.每个派生表必须有自己的别名。 否则你会收到这个错误: 错误代码:1248。每个派生表必须有自己的别名

在MYSQL Workbench中查看快照。 (我在工作台上测试过):

Mysql Workbench

enter image description here

在上一个快照中:您可以看到结果是:1106