我在SQL Server 2008中有2个相同的表,一个是我的应用程序不断使用的“实时”表。我在白天定期提取新记录并将它们插入“临时”表中,我需要从中获取新记录并插入到Live表中。我不希望插入任何重复项,以防一些记录重叠。我需要查看10列以查看是否存在相同的记录,我已经查看了一些TSQL示例,但到目前为止还没有工作,我还考虑过处理dupes而只是报告DISTINCT值但DISTINCT一个为一条记录工作,我需要它为10工作。任何建议?
谢谢, 萨姆
答案 0 :(得分:5)
这是NOT EXISTS
的理想用例 - 您可以根据需要查看多个条件,以确认您不会插入欺骗行为。
INSERT INTO Live
SELECT <fields>
FROM Staging s
WHERE NOT EXISTS (SELECT 1
FROM Live l
WHERE s.FieldA = l.FieldA
AND s.FieldB = l.FieldB
<all your checks here>...)