我有两个表(表 1 - 主表,表 2 - 详细表)。如何仅选择(查看)主表中那些在详细表中没有记录的记录?我可以使用什么 SQL 语句来实现此目的?我正在使用 MS SQL Server 2012。
编辑:表定义
表 1 - ID (PK) 表 2 - ID (PK)、表 1ID (FK)
使用NOT IN运算符
SELECT *
FROM Table1
WHERE ID NOT IN(SELECT Table1ID
FROM Table2 )
Run Code Online (Sandbox Code Playgroud)
我会使用它NOT EXISTS,因为它清晰、高效,并且对于可为空的列没有问题。
例如(MasterID是PK/FK):
SELECT master.*
FROM dbo.Table1 master
WHERE NOT EXISTS
(
SELECT 1 FROM Table2 detail
WHERE detail.MasterID = master.MasterID
)
Run Code Online (Sandbox Code Playgroud)
但您还有其他选择:http://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join
| 归档时间: |
|
| 查看次数: |
3307 次 |
| 最近记录: |