Sql 从表1复制到表2,无重复项
表1:id、fileref、1、2、3、4、5、账号、7、8、9等 表2:id、fileref、账号 有人能帮我创建一个sql查询,将表1的id、fileref、accno复制到表2而不复制,因为表2已经有很多信息,如表1的精简版本,但我现在将更多信息导入表1,需要将id、fileref、accno移动到表2而不复制,谢谢Sql 从表1复制到表2,无重复项,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,表1:id、fileref、1、2、3、4、5、账号、7、8、9等 表2:id、fileref、账号 有人能帮我创建一个sql查询,将表1的id、fileref、accno复制到表2而不复制,因为表2已经有很多信息,如表1的精简版本,但我现在将更多信息导入表1,需要将id、fileref、accno移动到表2而不复制,谢谢 INSERT INTO table2(id, fileref, accno) SELECT t1.id, t1.fileref, t1.accno FROM table1
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
对不起,误解了让我们来制作测试数据
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中 请阅读关于副本的内容?@RichBenner选择中的DISTINCT将只接受每个实例中的1个@TanguyB表2已经有很多信息,如表1的精简版本,所以您需要检查表中是否没有完全相同的行2@TanguyBOP明确表示表2中已经有数据,他不想再插入相同的数据。@RichBenner我的坏消息覆盖了它。加入表中的3个值,然后检查ID不存在的位置。这一个有效,根据时间是第一个:P抱歉,伙计们,再次感谢
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)
)