MySql查询:获取集合中唯一对的数量的更好方法是什么?

时间:2016-09-20 20:08:58

标签: mysql group-by distinct

有一个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?

(可选问题:如果它更快?)

1 个答案:

答案 0 :(得分:2)

COUNT()有一个可选的DISTINCT语法来解决这类问题:

SELECT `group_id`, COUNT(DISTINCT `member_id`) AS count_members 
FROM `member_groups` 
GROUP BY `group_id`;