Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表1复制到表2,无重复项_Sql_Sql Server_Sql Server 2016 - Fatal编程技术网

Sql 从表1复制到表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

表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 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)
                 )