我在Oracle DB中有一个表,其中存储了以下数据:
ROLE_ID | USER_ID ------------------ 14 | USER A 15 | USER A 11 | USER B 13 | USER A 15 | USER B 12 | USER C 15 | USER C
我想USER_ID同时拥有ROLE_ID13和15的所有s 。基于上面的示例,我只能返回USER_A。
如果我在下面写查询
select * from table where ROLE_ID in (13,15); 然后我也得到了其他用户。
select * from table where ROLE_ID in (13,15);
如何修改查询,以便只返回 USER A
您正在寻找…
select user_id from my_table where role_id in (13,15) group by user_id. having count(distinct role_id) = 2
您可以使用非重复性来确保,如果有两个USER A,您仍然会得到一个同时包含两个role_ids的用户