我有一个看似简单的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中的所有用户.
怎么做 ?
执行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)
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |