想象一下,我有一个包含如下数据的表格:
ROLE_ID | USER_ID | CODE
---------------------------------
14 | USER A | 001
15 | USER A | 002
11 | USER B | 004
13 | USER D | 005
13 | USER A | 001
15 | USER B | 009
15 | USER D | 005
12 | USER C | 004
15 | USER C | 008
13 | USER D | 007
15 | USER D | 007
我想获取只有 13 和 15 个角色 ID 的用户 ID 和代码。因此,根据上面的数据,我想返回以下内容
USER D | 005
USER D | 007
我有下面的查询,但是,它只带回一个,而不是两个。
SELECT a.user_id, a.code
FROM my_table a
WHERE a.ROLE_ID in (13,15,11,14)
group by a.USER_ID, a.code
having sum( case when a.role_id in (13,15) then 1 else 0 end) = 2
and sum( case when a.role_id in (11,14) then 1 else 0 end) = 0
ORDER BY USER_ID
上面的查询只带来
USER D | 005
而不是
USER D | 005
USER D | 007