我正在尝试计算来自多个表的所有记录,这些表的attr3
值为1。
这是我到目前为止的内容:
SELECT 'Dept' AS table_name, COUNT(*)
FROM table1, table2
WHERE table1.attr3='1' AND table2.attr3='1'
我遇到的问题是显示的号码有误。它应显示为
7
,但应显示为12
。我必须以这种方式编写它,因为
attr3
是外键,因此attr3 is ambiguous
可能会提供一些解决方案有人知道我可能会出问题吗?谢谢
编辑
然后,我想再次应用相同的查询两次,但要使用不同的值以获取单独的计数:
SELECT 'Dept' AS table_name, COUNT(*)
FROM table1, table2
WHERE table1.attr3='2' AND table2.attr3='2'
最小化代码将是一大优势!
最佳答案
逗号运算符创建笛卡尔乘积。在大多数情况下,这将产生比您想要的更多的行。而是将union all
与您的条件一起使用:
SELECT 'Dept' AS table_name, COUNT(*)
FROM ((select attr3 from table1) union all
(select attr3 from table2)
) t
WHERE attr3 = '1';
关于mysql - 计算值= 1的记录总数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41176207/