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

时间:2016-06-23 09:23:42

标签: sql sql-server sql-server-2016

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

表2:id,fileref,accno

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

3 个答案:

答案 0 :(得分: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)
                 )

答案 1 :(得分:0)

让我们制作测试数据;

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。

答案 2 :(得分:-1)

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个值并检查表2的ID等于NULL;

对于误会感到抱歉