从记录不存在的另一个 table 插入到 table
Insert into table from another table where the records don't exist
我正在尝试弄清楚如何从临时 table (temp) 中插入现有 table (tbl01),其中现有 [=25] 中尚不存在记录=] (tbl01)。我希望这是有道理的。我基本上是在尝试使用自上次更新 table 以来发生的记录来更新 table。到目前为止,这是我的代码:
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)
我遇到的问题是它运行了,但没有将任何新记录放入 table - 应该有很多新记录。我确定这是我所缺少的小而愚蠢的东西。我用这个 post 作为指导:How to avoid duplicates in INSERT INTO SELECT query in SQL Server?
提前致谢!
问题是您的内部查询不以任何方式依赖于临时 table。基本上,你写的是"insert into tbl01
if no records exists in tbl01
"。要修复它,您需要在 exists
:
内的查询中添加一个 where 子句
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)
我正在尝试弄清楚如何从临时 table (temp) 中插入现有 table (tbl01),其中现有 [=25] 中尚不存在记录=] (tbl01)。我希望这是有道理的。我基本上是在尝试使用自上次更新 table 以来发生的记录来更新 table。到目前为止,这是我的代码:
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)
我遇到的问题是它运行了,但没有将任何新记录放入 table - 应该有很多新记录。我确定这是我所缺少的小而愚蠢的东西。我用这个 post 作为指导:How to avoid duplicates in INSERT INTO SELECT query in SQL Server?
提前致谢!
问题是您的内部查询不以任何方式依赖于临时 table。基本上,你写的是"insert into tbl01
if no records exists in 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)