Oracle SQL 子查询 - NOT EXISTS 的使用

Oracle SQL Subquery - Usage of NOT EXISTS

我使用查询来查找主键列表。 table 中每个 ForiegnKey 一个主键,使用以下查询。

select foreignKey, min(primaryKey)
from t
group by foreignKey;

假设这是结果:1,4,5

现在我有另一个 table - Table B,它包含所有主键的列表。它有 1,2,3,6,7,8,9

我想用上面的查询写一个查询,这样我就得到了 Table B 中不存在的原始查询(上面)的一个子集。我想用新查询返回 4 和 5 .

使用 having 子句:

select foreignKey, min(primaryKey)
from t
group by foreignKey
having min(primarykey) not in (select pk from b);

您还应该能够将其表达为 not exists:

having not exists (select 1
                   from b
                   where b.pk = min(t.primaryKey)
                  )