我正在试图弄清楚如何从临时表(temp)插入现有表(tbl01),其中现有表(tbl01)中尚不存在记录。我希望这是有道理的。我基本上是,尝试更新一个表,其中包含自上次更新表以来发生的记录。到目前为止,这是我的代码:
insert into tbl01
(sale_store, sale_dt, sale_register, sale_trans)
select distinct
sale_store, sale_dt, sale_register, sale_trans
from temp
where NOT EXISTS (select * from tbl01)
我遇到的问题是它运行,但没有将任何新记录放入表中 - 应该有很多新记录。我确定这是一个小而愚蠢的东西,我很想念。我使用这篇文章作为我的向导:How to avoid duplicates in INSERT INTO SELECT query in SQL Server?
提前谢谢!
答案 0 :(得分:5)
问题是您的内部查询不以任何方式依赖于临时表。基本上,如果tbl01
"中没有记录,你写的是"插入tbl01
。要修复它,您需要在exists
:
insert into tbl01
(sale_store, sale_dt, sale_register, sale_trans)
select distinct
sale_store, sale_dt, sale_register, sale_trans
from temp
where NOT EXISTS (
select *
from tbl01
where temp.sale_store = tbl01.sale_store
and temp.sale_dt = tbl01.sale_dt
and temp.sale_register = tbl01.sale_register
and temp.sale_trans = tbl01.sale_trans)