在mysql查询中只对join中的不同元素进行计数

h5qlskok  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(256)

我的数据库中有两个表:

╔════════════════╗
║ beer           ║
╠════════════════╣
║ id             ║
║ name           ║
║ ...            ║
╚════════════════╝

╔════════════════╗
║ checkin        ║
╠════════════════╣
║ id             ║
║ beer_id        ║
║ user_id        ║
║ date           ║
║ ...            ║
╚════════════════╝

我做了一个简单的查询,返回啤酒被检入的次数:

SELECT COUNT(c.id) as TOTAL, b.*, c.*
FROM beer b
JOIN checkin c ON c.beer_id = b.id
GROUP BY c.beer_id
ORDER BY TOTAL DESC

修改它的最佳方法是什么,以便返回的“总计”计数由唯一的用户进行(如果一个用户有多个相同啤酒的签入,那么应该只计算一次)?

b1uwtaje

b1uwtaje1#

按beerid分组计算不同的用户数。

SELECT COUNT(distinct c.user_id) as TOTAL
FROM beer b
JOIN checkin c ON c.beer_id = b.id
GROUP BY c.beer_id
ORDER BY TOTAL DESC

相关问题