如果日期更新,则更新行

时间:2012-10-10 12:40:50

标签: sql-server

我有一个包含11000行的表(两列是URN和日期),我想为它添加行。 但是,如果在添加新行时URN已经存在,则应覆盖先前的记录,以便更新日期。 例如,

select urn, GETDATE() AS Date
into table1
from table2 

如果urn 10253在table1中的日期为23/05/2005但是urn在table2中则应该替换为urn 10253 date 10/10/2012

2 个答案:

答案 0 :(得分:2)

以下是使用merge的语法,将在sqlserver 2008中运行:

merge into table1 t1 
using table2 t2 on t1.urn = t2.urn
when not matched then
insert (urn,date)values(t2.urn,t2.date)
when matched then
update
set t1.date = t2.date;

答案 1 :(得分:1)

- 首先更新所有匹配的记录

Update t1 SET date=t2.date 
from table1 t1 inner join table2 t2 
on t1.urn=t2.urn

- 插入所有新记录

INSERT INTO table1
select * from table2 t1 where NOT EXISTS(select * from table1 t1 where t1.urn=t2.urn)