我正在尝试计算多个表中 attr3
值为 1 的所有记录。
这是我到目前为止所拥有的:
SELECT 'Dept' AS table_name, COUNT(*)
FROM table1, table2
WHERE table1.attr3='1' AND table2.attr3='1'
我遇到的问题是它显示了错误的数字。它应该显示为 7
,但实际上是 12
。
我必须以这种方式编写它,因为 attr3
是外键,因此某些解决方案可能会出现 attr3 is ambigacy
有人知道我哪里可能出错吗?谢谢
编辑
然后,我想再应用相同的查询两次,但使用不同的值来获取单独的计数:
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 - 计算 value = 1 的记录的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41176207/