gpt4 book ai didi

mysql - 在 MySQL 中,如何找到用户何时链接到两个特定组?

转载 作者:行者123 更新时间:2023-11-29 01:55:09 25 4
gpt4 key购买 nike

一个用户可以有多个组分配给他们,但我只想找到属于两个特定组的用户。我该怎么做?

例如用户映射表如下所示:

id | user_id | group_id
-----------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 2 | 8
5 | 3 | 1
6 | 3 | 2

我想获取所有属于 group_id 且只有 12 的用户。

所以结果是:

id | user_id | group_id
-----------------------
1 | 1 | 1
2 | 1 | 2
5 | 3 | 1
6 | 3 | 2

我尝试了以下方法,但没有成功:

SELECT um.*
FROM user_map AS um
WHERE (group_id = '1' AND group_id = '2');

SELECT um.*
FROM user_map AS um
WHERE (group_id = '1' OR group_id = '2');

却得到了错误的结果。

本质上,我希望能够GROUP BY user_id,这样我就有了属于组 12 的唯一用户列表>.

最佳答案

如果您只需要用户,请使用group byhaving:

SELECT um.user_id
FROM user_map um
GROUP BY um.user_id
HAVING COUNT(*) = 2 AND
SUM(group_id IN ('1', '2')) = 2;

这会检查用户是否有两个匹配的组,以及这些组是否正是您想要的组。这假定您在 user_map 表中没有重复项。

如果要原始行,加入原始信息:

SELECT um.*
FROM user_map um JOIN
(SELECT um.user_id
FROM user_map um
GROUP BY um.user_id
HAVING COUNT(*) = 2 AND SUM(group_id IN ('1', '2')) = 2
) umm
ON um.user_id = umm.user_id;

关于mysql - 在 MySQL 中,如何找到用户何时链接到两个特定组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31142022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com