从表A到表B的SQL INSERT缺失行
问题描述:
我试图将行插入表'数据'中,如果它们不存在。从表A到表B的SQL INSERT缺失行
对于Export $中的每一行,我需要检查'Data'是否符合Period(date)和ID(int)的行的数据 - 如果这些行不存在,那么应该创建它们。
我很确定我的'NOT EXISTS'部分是错的 - 最好的方法是什么?感谢您的帮助
IF NOT EXISTS (SELECT * FROM Data, Export$ WHERE Data.ID = Export$.ID AND Data.Period = Export$.Period)
INSERT INTO Data (Period, Performance, ID)
SELECT Period, [Return], [ID] FROM Export$
答
试试这个:
INSERT INTO Data (Period, Performance, ID)
SELECT Period, [Return], [ID]
FROM Export$ e
where not exists (
select *
from Data
where ID = e.ID and Period = e.Period)
+0
工作完美!谢谢! – 2013-02-12 23:53:47
答
尝试类似,都需要调整,以适应你的表
insert into data
select * from export
left join data on data.id = export.id
and data.period = export.period
where data.id is null
在你不存在部分看上去正常乍一看。你认为什么是错的? – 2013-02-12 23:43:41
问题在于,如果任何行(可能是其他行)匹配(可能有很多可以导入的行),这将阻止插入任何行。 – GilM 2013-02-12 23:49:11
哦!你是否试图从*'Export $'插入“missing records”*?如果是这样,请查阅'MERGE'。此外,Data和Exports之间的','有一个CROSS JOIN - 我建议不要这样的语法。 – 2013-02-12 23:53:51