有一个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?
(可选问题:如果它更快?)
答案 0 :(得分:2)
COUNT()有一个可选的DISTINCT语法来解决这类问题:
SELECT `group_id`, COUNT(DISTINCT `member_id`) AS count_members
FROM `member_groups`
GROUP BY `group_id`;