选择没有一对多关系的行的最佳方法

cle*_*ent 0 sql sql-server sql-server-2008

我想选择 PERSON 表中没有记录到主表为 FK 的 DOCUMENT 表中的所有行。

什么对我来说更好?左加入?不在?还有其他解决方案吗?

这是简单的方案:

PERSON:

personId
personName
personSex
Run Code Online (Sandbox Code Playgroud)

DOCUMENT:

documentId
FK_Person
Run Code Online (Sandbox Code Playgroud)

先感谢您

jue*_*n d 5

使用 aleft join并检查到另一个表的链接是否失败 ( is null)

select p.*
from person p
left join document d on p.personId = d.fk_person
where d.fk_person is null
Run Code Online (Sandbox Code Playgroud)

请参阅连接的说明