我想知道是否有人可以帮助我?
在我的数据库中,我有两个表具有相同的列并包含相同类型的数据。我的第一张桌子是我们过去6年来一直保持的,并且有几百万张记录。我的第二张表是我们从其他地方获得的,包含超过1亿条记录。表2中的某些数据可能已包含在表1中。
我想要实现的是将表二中的唯一记录添加到表一中。
我的PK对于两个表都是相同的,并且正是这个列可以识别它是否是重复的。
问题出现了,我需要在流程结束时显示重复记录,以便对这些记录进行审核。
我对SQL有很好的基础知识,但还不够先进,无法实现这一目标。 如果有人能够提供帮助,将不胜感激。
答案 0 :(得分:0)
请尝试:
INSERT INTO Table1
SELECT DISTINCT * FROM Table1
WHERE PrimaryKeyColumn NOT IN (SELECT PrimaryKeyColumn from Table1)
答案 1 :(得分:0)
这样的事情:
-- store the duplicates
SELECT t2.id
INTO #tempTable
FROM table2 t2
JOIN table1 t1 ON t1.id = t2.id
-- insert the non-duplicates
SELECT t2.*
INTO table1
FROM table2 t2
LEFT JOIN #tempTable t1 ON t1.id = t2.id
-- Alternative to above - LEFT JOIN table1 t1 ON t1.id = t2.id
WHERE t1.id IS NULL
-- display the duplicates
SELECT t1.*, t2.*
FROM #tempTable
JOIN table1 t1 ON tempTable.id = t1.id
JOIN table2 t2 ON tempTable.id = t2.id
答案 2 :(得分:0)
insert into one(...)
select ...
from two t
where not exists (
select *
from one x
where x.id = t.id
)
;
答案 3 :(得分:0)
由于您使用的是Sql 2008,请考虑使用Merge语句 这将插入唯一键
MERGE ONE AS Tar
USING (SELECT Id FROM TWO) AS Sor
ON Tar.Id=Sor.Id
WHEN NOT MATCHED THEN
INSERT(Id)
values(Sor.Id);
这将显示重复的密钥
SELECT B.ID
FROM ONE A
LEFT JOIN TWO B
ON A.ID=B.ID
WHERE B.ID IS NOT NULL