让我们制作测试数据;
IF OBJECT_ID('tempdb..#Table1') IS NOT NULL DROP TABLE #Table1
GO
CREATE TABLE #Table1 (id int, fileref varchar(10), accno varchar(10))
INSERT INTO #Table1 (id, fileref, accno)
VALUES
(1,'File1','Acct1')
,(2,'File2','Acct2')
,(3,'File3','Acct3')
,(4,'File4','Acct4')
,(5,'File5','Acct5')
IF OBJECT_ID('tempdb..#Table2') IS NOT NULL DROP TABLE #Table2
GO
CREATE TABLE #Table2 (id int, fileref varchar(10), accno varchar(10))
INSERT INTO #Table2 (id, fileref, accno)
VALUES
(1,'File1','Acct1')
,(2,'File2','Acct2')
此查询将确保所有三个字段都不匹配。
INSERT INTO #Table2 (id, fileref, accno)
SELECT
a.id
,a.fileref
,a.accno
FROM #Table1 a
LEFT JOIN #Table2 b
ON a.id = b.id
AND a.fileref = b.fileref
AND a.accno = b.accno
WHERE b.id IS NULL
此查询的结果是将缺少的 3 行从 table1 插入到 table2 中。