我有一个语句,用于计算有 attr3 = 1
的记录数。
SELECT 'Dept' AS table_name, COUNT(*)
FROM ((select attr3 from table1) union all
(select attr3 from table2)
) t
WHERE attr3 = '1';
现在我需要另一个语句来执行相同的操作,但计算有 attr3 = 2
的记录数。
SELECT 'Dept' AS table_name, COUNT(*)
FROM ((select attr3 from table1) union all
(select attr3 from table2)
) t2
WHERE attr3 = '2';
理想情况下,数据将以这种格式显示
Dept count(*)
attr3 = 1 4
attr3 = 2 6
如果我单独执行这些语句,则此方法有效,我只是想将它们连接在一起。有人可以帮忙吗?
最佳答案
一个简单的GROUP BY
和WHERE attr3 in()
就足够了。
SELECT Z.attr3 as Dept, count(*) as cnt
FROM (SELECT attr3 FROM table1
UNION ALL
SELECT attr3 FROM table2) Z
WHERE attr3 in ('1','2')
GROUP BY Z.attr3
由于 attr3 定义了您想要作为计数依据的组,因此只需对其进行分组,并通过 where 子句将结果限制为并集后的 1,2。
关于mysql - 如何在两个语句上使用联接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186418/