表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而不重复,谢谢
答案 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;
对于误会感到抱歉