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