Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Актуализирайте и вмъкнете в една таблица от друга

Merge table2 as target
using table1  as source
on
target.id=source.id
When matched 
Then
update 
set target.id=source.id,
    target.name=source.name
When not matched by Target Then
INSERT (id, name) VALUES (id, name);

Има някои проблеми с оператора Merge, така че трябва да се използва с внимание ..

Освен това препоръчвам да използвате сливане като два отделни DML израза, както по-долу..

insert into table2
select * from table1 t1 where not exists (select 1 from table2 t2 where t2.id=t1.id)

update t2
set 
t2.id=t1.id,
t2.name=t1.name
from 
table1 t1
join
table2 t2
on t1.id=t2.id

Причините са посочени от Пол Уайт тук в неговия подробен отговор ..



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да генерираме Drop Table Statement за всички таблици в база данни - SQL Server / T-SQL урок, част 48

  2. Как да използвате DataContext.ExecuteCommand и да получите върнатата стойност на изпълнената съхранена процедура?

  3. Как да напиша UTF-8 знаци с помощта на групово вмъкване в SQL Server?

  4. Използване на променлива в SQL израза LIKE

  5. SQL Server тригери - ред на изпълнение