比较,如果不是条目更新表

时间:2017-04-27 16:07:38

标签: sql-server-2008

我的存储过程中有两个表,一个是实际表,一个是临时表。我正在做的是将数据存入我的临时表。我有临时表中的所有数据,现在我想比较我的实际表中是否有相同的数据;如果没有从临时表插入主表。

create table #X
(
    Field_PL  varchar(50),
    Field_Station varchar(50),
    Field_Value varchar(50),
    Field_EFox_PL varchar(50),
    lasteditdt datetime,
    disable bit 
)

请查看表格结构。附件是临时表#X,并且主表的结构与X相同。

1 个答案:

答案 0 :(得分:0)

如果#X可能有重复项,并且您不希望使用except插入这些重复项:

insert into MainTable (Field_PL, Field_Station, Field_Value, Field_EFox_PL, lasteditdt, disable)
select Field_PL, Field_Station, Field_Value, Field_EFox_PL, lasteditdt, disable
from #X
except 
select Field_PL, Field_Station, Field_Value, Field_EFox_PL, lasteditdt, disable
from MainTable

如果#X可能有重复项,并且您想要使用not exists()插入这些重复项:

insert into MainTable (Field_PL, Field_Station, Field_Value, Field_EFox_PL, lasteditdt, disable)
select 
    Field_PL
  , Field_Station
  , Field_Value
  , Field_EFox_PL
  , lasteditdt
  , disable
from #X as x
where not exists (
  select 1 
  from MainTable i
  where i.Field_PL      = xField_PL
        i.Field_Station = xField_Station
        i.Field_Value   = xField_Value
        i.Field_EFox_PL = xField_EFox_PL
        i.lasteditdt    = xlasteditdt
        i.disable       = xdisable
  )