我正在尝试计算来自多个表的所有记录,这些表的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/

10-12 02:23