SQL-如何选择没有详细记录的主记录?
我有两张表,表1-主表,表2-明细表。如何从主表中选择“仅查看在明细表中没有记录的记录”?我可以使用什么SQL语句来执行此操作?我正在使用MS SQL Server 2012 编辑:表定义 表1-ID PK Table2-ID PK,Table1ID FK我将使用的是不存在的,因为它清晰、高效,并且与可空列没有任何问题 例如,MasterID是PK/FK:SQL-如何选择没有详细记录的主记录?,sql,sql-server,Sql,Sql Server,我有两张表,表1-主表,表2-明细表。如何从主表中选择“仅查看在明细表中没有记录的记录”?我可以使用什么SQL语句来执行此操作?我正在使用MS SQL Server 2012 编辑:表定义 表1-ID PK Table2-ID PK,Table1ID FK我将使用的是不存在的,因为它清晰、高效,并且与可空列没有任何问题 例如,MasterID是PK/FK: SELECT master.* FROM dbo.Table1 master WHERE NOT EXISTS ( SELECT 1
SELECT master.*
FROM dbo.Table1 master
WHERE NOT EXISTS
(
SELECT 1 FROM Table2 detail
WHERE detail.MasterID = master.MasterID
)
但您还有其他选择:使用运算符
这将极大地帮助您回答您的问题:
使用独占的左外联接如何
SELECT
master.*
FROM
master LEFT OUTER JOIN details
ON master.ID = details.masterID
WHERE details.ID IS NULL;
请查看更详细的说明,为什么此查询是此类问题的解决方案。在这种情况下,我更喜欢使用左连接:
select tp.*
from table_parent tp
left join table_child tc on tc.parent_id = tp.id
where tc.parent_id is null
两个表中的记录是否共享相同的ID?表1-ID PK和表2[ID PK,表1ID FK]
SELECT
master.*
FROM
master LEFT OUTER JOIN details
ON master.ID = details.masterID
WHERE details.ID IS NULL;
select tp.*
from table_parent tp
left join table_child tc on tc.parent_id = tp.id
where tc.parent_id is null