我有一个表,其列如下:membership_id | user_id | group_id

mysql - 使用几个WHERE子句的SQL常见匹配数-LMLPHP

我正在寻找一个SQL查询以获取2个不同用户之间的公共组数。我可以在几个查询中并使用一些PHP来做到这一点,但我想知道是否有一种方法可以仅使用SQL。

与用户ID 1和3一样,共有3个公共组(1、5和6),因此返回的结果为3。

我已经进行了几次测试,但到目前为止没有结果...谢谢。

最佳答案

您不需要“多个WHERE子句”,甚至不需要自我JOIN:

SELECT group_id
FROM theTable AS t
WHERE t.user_id IN (1, 3)
GROUP BY group_id
HAVING COUNT(DISTINCT user_id) = 2;


更一般地

SELECT group_id
FROM theTable AS t
WHERE t.user_id IN ([user id list])
GROUP BY group_id
HAVING COUNT(DISTINCT user_id) = [# of user ids in list];




编辑:哦,你想要组的数量。

SELECT COUNT(1) FROM (
  SELECT group_id
  FROM theTable AS t
  WHERE t.user_id IN (1, 3)
  GROUP BY group_id
  HAVING COUNT(DISTINCT user_id) = 2
);

关于mysql - 使用几个WHERE子句的SQL常见匹配数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41574872/

10-11 22:27
查看更多