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)
)
我使用查询来查找主键列表。 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)
)