SQL根据不存在的记录选择记录

时间:2019-12-17 17:54:40

标签: sql select

我有一张记录如下的表:

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的许多组合。

在此表名称中,满足此选择的只是玛丽。

组成该选择的任何帮助将不胜感激。

1 个答案:

答案 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
                 );
相关问题