从 1 table 复制到 table 2,没有重复

Copy from 1 table to table 2, no duplicates

Table 1: id, fileref, 1, 2, 3, 4, 5, accno, 7, 8, 9, 等等...

table 2: id, fileref, accno

有人可以帮我创建一个 sql 查询来复制 table 1 id, fileref, accno 到 table 2 而没有重复,因为 table 2 已经有了很多信息,例如 table 1 的精简版,但我现在将更多信息导入 table 1 并且需要将 id、fileref、accno 移动到 table 2 而不重复,谢谢

INSERT INTO table2(id, fileref, accno)

SELECT t1.id, t1.fileref, t1.accno

FROM table1 t1 

JOIN table2 t2 ON t1.id = t2.id AND t1.fileref = t2.fileref AND t1.accno = t2.accno

WHERE t2.id IS NULL;

应该做。

编辑:

截取不同的部分,在3个值上加入table并检查table 2的ID在哪里等于NULL;

抱歉造成误会

我们来制作测试数据;

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 行从表 1 插入到表 2 中。

INSERT INTO table2
SELECT id, fileref, accno
FROM table1 T
WHERE NOT EXISTS(SELECT * 
                 FROM table2 TT
                 WHERE (T.id = TT.id
                       AND
                       T.fileref = TT.fileref
                       AND 
                       T.accno   =  TT.accno)
                 )