select 没有一对多关系的行的最佳方法
best way to select rows that has no one to many relation
我想 select table PERSON 的所有行都没有记录到 DOCUMENT table 中,其中主要 table 作为 FK。
什么对我来说更好?左连接?不在?还有其他解决方案吗?
这是简单的方案:
PERSON
:
personId
personName
personSex
DOCUMENT
:
documentId
FK_Person
提前致谢
使用一个 left join
并检查 link 到另一个 table 是否失败 (is null
)
select p.*
from person p
left join document d on p.personId = d.fk_person
where d.fk_person is null
尝试使用 not exist
或 left join
:
select P.*
from PERSON P left join DOCUMENT D on P.personId = D.FK_Person
where D.FK_Person is null
或
select * from PERSON P
where not exists (select 1 from DOCUMENT D where P.personId = D.FK_Person)
我想 select table PERSON 的所有行都没有记录到 DOCUMENT table 中,其中主要 table 作为 FK。
什么对我来说更好?左连接?不在?还有其他解决方案吗?
这是简单的方案:
PERSON
:
personId
personName
personSex
DOCUMENT
:
documentId
FK_Person
提前致谢
使用一个 left join
并检查 link 到另一个 table 是否失败 (is null
)
select p.*
from person p
left join document d on p.personId = d.fk_person
where d.fk_person is null
尝试使用 not exist
或 left join
:
select P.*
from PERSON P left join DOCUMENT D on P.personId = D.FK_Person
where D.FK_Person is null
或
select * from PERSON P
where not exists (select 1 from DOCUMENT D where P.personId = D.FK_Person)