Mac*_*ver 4 t-sql sql-server diff compare missing-data
假设SQL Server数据库中有两个表,两个表具有相同的模式.我想比较两个表上的单个列,并找到table1中缺少但在table2中的值.我在每个查询中得到一个不同的列表后,我已经在Excel中手动执行了这个操作,但如果我有一个查询,那么工作就会少一些.如何通过T-SQL找到丢失的记录?我想为以下数据类型执行此操作:datetime, nvarchar & bigint.
SELECT DISTINCT [dbo].[table1].[column1]
FROM [dbo].[table1]
ORDER BY [dbo].[table1].[column1] DESC
SELECT DISTINCT [dbo].[table2].[column1]
FROM [dbo].[table2]
ORDER BY [dbo].[table2].[column1] DESC
Run Code Online (Sandbox Code Playgroud)
Mic*_*son 11
有几种方法可以做到这一点......
LEFT JOIN:
SELECT DISTINCT t2.column1
FROM dbo.table2 t2
LEFT JOIN dbo.table1 t1
ON t2.Column1 = t1.Column1
WHERE t1.Column1 IS NULL
Run Code Online (Sandbox Code Playgroud)
NOT EXISTS:
SELECT DISTINCT t2.column1
FROM dbo.table2 t2
WHERE NOT EXISTS (
SELECT 1
FROM dbo.table1 t1
WHERE t1.column1 = t2.column1
)
Run Code Online (Sandbox Code Playgroud)
NOT IN:
SELECT DISTINCT t2.column1
FROM dbo.table2 t2
WHERE t2.column1 NOT IN (
SELECT t1.column1
FROM dbo.table1 t1
)
Run Code Online (Sandbox Code Playgroud)
这些方法的行为和效率略有不同......主要基于NULL列中值的存在,因此请尝试使用每种方法找到最有效的方法,以获得您期望的结果.