MySQL 通过返回不需要的结果使用 COUNT、LEFT JOIN 和 GROUP

标签 mysql count group-by left-join

我需要一些帮助才能获得所需的结果,在本例中为 7(产品表中匹配的行数)。

我得到的是 7 行,其计数基于 LEFT JOIN 中返回的行数。

SELECT count(p.id) as theCount 
            FROM products p 
            left join tablea a on p.id = a.productId 
            left join tableb b on p.id = b.productId 
            WHERE (a.col = 'val' or b.col = 'val')
group by p.id

如果我不按 p.id 分组,我会返回 28 行,这是来自 LEFT JOIN 的所有行。

我知道这很简单,但我想不通。

谢谢。

最佳答案

select count(distinct p.id),也许吧?因为你是从两个不同的表中提取数据,所以你会得到一个错误的 (p.id, a.col, b.col) being (xxx, null, yyy) (xxx, yyy, null)

关于MySQL 通过返回不需要的结果使用 COUNT、LEFT JOIN 和 GROUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13216241/

相关文章:

Mysql单列结果转多列结果

c++ - 如何遍历 multimap 并打印按键分组的值?

sql - 是否可以使用某种组查询对列中的数字进行分组?

jquery - 如何使用 jQuery 计算选项标签的数量?

mysql - 在单个查询中进行分组、排序和计数

mysql - 将所有大于 0 的选定值设置为 1 : mySQL

php - 无法更改 phpmyadmin 的时区

mysql - 非常大的mysql插入查询需要生命周期来执行

php - 在 mysql (php) 中存储缺少日期/月份的日期的方法

mysql - 删除重复行 GROUP BY 和 LIKE