我有一张记录如下的表:
ID | NAME | PHASE_ID | OPERATION_ID | EXT_ID |
---+------+----------+--------------+--------+
1 | john | 5 | 5019 | aa-aaa |
2 | ann | 1 | 5048 | aa-aaa |
3 | mary | 1 | 5048 | bb-bbb |
4 | zack | 5 | 5019 | cc-ccc |
5 | paul | 1 | 5048 | cc-ccc |
6 | zoe | 2 | 5555 | aa-aaa |
7 | luke | 3 | 6666 | bb-bbb |
,我想从PHASE_ID = 1和OPERATION_ID = 5048的记录中选择所有名称,对于这些记录,没有与ASE_ID = 5和OPERATION_ID = 5019相同的EXT_ID记录。在此表中,同一EXT_ID有PHASE_ID和OPERATION_ID的许多组合。
在此表名称中,满足此选择的只是玛丽。
组成该选择的任何帮助将不胜感激。
答案 0 :(得分:1)
听起来像not exists
:
select distinct name
from t
where phase_id = 1 and operation_id = 5048 and
not exists (select 1
from t t2
where t2.ext_id = t.ext_id and
t2.phase_id = 5 and t2.operation_id = 5019
);