0

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

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

如果 urn 10253 在 table1 中有日期 23/05/2005 但 urn 在 table2 那么它应该被替换为 urn 10253 日期 10/10/2012

4

2 回答 2

2

以下是使用合并的语法,适用于 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;
于 2012-10-10T13:20:05.267 回答
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)
于 2012-10-10T12:46:00.373 回答