SQL:获取许多特定组中的所有用户

Lau*_*ent 3 mysql sql

我有一个看似简单的SQL问题,但我找不到解决方案......

我有3张桌子:

1)"user"(id,lastname,firstname)

2)"user_x_group"(id_user,id_group)

3)"组"(id,name)

"用户"可以有许多"组".

什么是同时获取组1和组2中所有用户的查询?

SELECT *
FROM user u 
JOIN user_x_group x ON x.id_user = u.id 
WHERE id_group IN ('1', '2') 
Run Code Online (Sandbox Code Playgroud)

不正确,因为我获得了组1中的所有用户+组2中的所有用户+组1和组2中的所有用户.我只需要一个查询中的组1和组2中的所有用户.

怎么做 ?

jar*_*rlh 5

执行a GROUP BY和require(HAVING)可以找到多个不同的id_group

SELECT u.*
FROM user u 
JOIN user_x_group x ON x.id_user = u.id 
WHERE id_group IN ('1', '2') 
group by u.id
having count(distinct id_group) >= 2
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以轻松调整为3个或更多id_groups.

备选HAVING条款,适用于两组:

having max(id_group) <> min(id_group)
Run Code Online (Sandbox Code Playgroud)