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

this explanation of joins

尝试使用 not existleft 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)