mysql - 计算 value = 1 的记录的总和

标签 mysql sql database

我正在尝试计算多个表中 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/

相关文章:

php - 可维护的 Web Widget

包含多个标签的 SQL 查询

sql - 模拟数据库中的继承

c# - 如何在更新另一个表时自动更新一个表使用 C#

php - PHP 中的 MySQL 连接结果不同?

mysql - 计算MySQL中已使用字段(列)的百分比

php - 根据用户点击更改文件名

sql - ROW_NUMBER() 性能优化

mysql - PostgreSQL 'schema' 的 MySQL 等价物是什么?

database - 无法选择数据库 - Wordpress