MySql查询: what's the better way to get the number of unique pairs in a set?

标签 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?

(可选问题:如果是的话,速度更快吗?)

最佳答案

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/

相关文章:

mysql - 检查用户匹配数组是否作为具有匹配列的链接表中的条目存在

mysql - 如何在 MySQL 中按字符串模式收集行?

mysql - 选择具有不同参数的最新记录行

php - JQuery:从数据库加载数据并将其插入以选择

sql - MySQL 5 : Does it matter what order my GROUP BY fields are in?

php - 相同的哈希多个图像

mysql - 查询内的查询速度非常慢。这有什么问题吗? mysql

sql - MySQL : Select DISTINCT/UNIQUE, 但返回所有列?

mysql - 如何在 MySQL 中发现一个月中每一天的总和?

mysql查询,允许重复