小编典典

对单个表的内部查询

sql

我在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); 然后我也得到了其他用户。

如何修改查询,以便只返回 USER A


阅读 262

收藏
2021-04-15

共1个答案

小编典典

您正在寻找…

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的用户

2021-04-15