有一个member_gorup表:
id member_id group_id
-- --------- --------
1 23 17
2 23 17
3 23 13
4 24 17
5 24 5
6 25 13
需要找到的是每个group_id有多少个唯一的(不同的)member_id。在本例中是:
17 - 2
13 - 2
5 - 1
我设法通过使用以下查询来实现此目的:
SELECT COUNT(`group_id`), `group_id` FROM
(SELECT `member_id`, `group_id`
FROM `member_groups`
GROUP BY `member_id`, `group_id`) AS `groups`
GROUP BY `group_id`
有没有办法在不使用嵌套查询的情况下获得相同的结果 - 也许使用 DISTINCT?
(可选问题:如果是的话,速度更快吗?)
最佳答案
COUNT() 有一个可选的 DISTINCT 语法来解决此类问题:
SELECT `group_id`, COUNT(DISTINCT `member_id`) AS count_members
FROM `member_groups`
GROUP BY `group_id`;
关于MySql查询: what's the better way to get the number of unique pairs in a set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39602947/