mysql - sql 在 LEFT JOIN 中使用一个 count() 另一个 count()

标签 mysql count left-join distinct

有:

SELECT *, COUNT(MakeModel) as `count`
FROM (`table_a`)
GROUP BY `MakeModel`
ORDER BY `count` DESC

对我来说效果很好(计数 = 2) 使用 LEFT JOIN 扩展此查询,如下所示:

SELECT *, COUNT(distinct b.rating) as ratings
FROM (`table_a`)
LEFT JOIN `model_ratings` AS b ON `b`.`MakeModel` = `table_a`.`MakeModel`
GROUP BY `table_a`.`MakeModel`

也运行良好(评级 = 3), 但将这两个计数结合起来,如下所示:

SELECT *, COUNT(table_a.MakeModel) as `count`, COUNT(distinct b.rating) as ratings
FROM (`table_a`)
LEFT JOIN `model_ratings` AS b ON `b`.`MakeModel` = `table_a`.`MakeModel`
GROUP BY `table_a`.`MakeModel`
ORDER BY `count` DESC

然后(计数= 6)和(评级= 3)。

因此计数变为(“计数”乘以“收视率”)。

但我需要 (count= 2 ) 和 ( rating = 3)

我在这里缺少什么?

最佳答案

我自己发现的 首先是 LEFT JOIN 内的 COUNT() 和 GROUP

SELECT *, COUNT(table_a.MakeModel) as `count`, b.rating as ratings
FROM (`table_a`)
LEFT JOIN (
   SELECT MakeModel, COUNT(distinct rating)
   FROM `model_ratings`
   GROUP BY MakeModel
   ) AS b ON `b`.`MakeModel` = `table_a`.`MakeModel`

GROUP BY `table_a`.`MakeModel`
ORDER BY `count` DESC

关于mysql - sql 在 LEFT JOIN 中使用一个 count() 另一个 count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311108/

相关文章:

php - count() 当有数千条记录时返回 1

r - 计算 R 中的序列

sql - 为什么我的 WHERE 子句会影响我的 LEFT JOIN?

mysql - SQL 连接 3 个表,其中一个是可选的

php - 使用 PHP 将嵌套数组插入 MySQL 数据库

如果两个条件都为真,则 MySQL 插入如果不存在则更新

mysql - MySQL中如何对多个子查询进行分组

c# - 如何解决我的代码中当前的问题?

如果子查询包含 NULL,SQL select with "IN"子查询不返回任何记录

mysql - 将 MySQL 转储文件中的所有文本小写后无法创建表