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

T-SQL Възможно ли е да се направи актуализация / вмъкване с една бърза операция

SQL Server 2008 и по-нови имат оператор MERGE, който прави точно това.

Вижте MSDN Books Online документите на MERGE за подробности.

По принцип имате нужда от четири неща:

  • източник (таблица или изглед или вграден оператор SELECT)
  • цел
  • а СЕ ПРИСЪЕДИНЕТЕ условие, което свързва двете
  • изявления за случаите, когато има СЪОТВЕТСТВИЕ (редовете съществуват както в източника, така и в целта), НЕ СЪВСТВЕТЯВАТ (когато редът все още не съществува в целта) и т.н.

Така че основно дефинирате нещо като:

MERGE (targettable) AS t
USING (sourcetable) AS s
ON (JOIN condition between s and t)
WHEN MATCHED THEN
   UPDATE SET t.Col1 = s.Col1, t.Col2 = s.Col2 (etc.)
WHEN NOT MATCHED THEN
   INSERT(Col1, Col2, ..., ColN) VALUES(s.Col1, s.Col2, ......, s.ColN)

Това се прави като един израз и е силно оптимизирано от SQL Server.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените колона, без да изпускате таблица в SQL 2008

  2. 13 най-добри практики за сигурност на SQL Server

  3. SQL Server - Дайте разрешение за влизане за достъп за четене до всички съществуващи и бъдещи бази данни

  4. Динамични централни колони в SQL Server

  5. Достъп до таблицата в журнала с помощта на SQL Server Profiler