Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

T-SQL Czy możliwe jest wykonanie aktualizacji / wstawienia za pomocą jednej szybkiej operacji?

SQL Server 2008 i nowsze mają instrukcję MERGE, która dokładnie to robi.

Zobacz dokumentację MSDN Books Online dotyczącą MERGE po szczegóły.

Zasadniczo potrzebujesz czterech rzeczy:

  • źródło (tabela lub widok lub wbudowana instrukcja SELECT)
  • cel
  • DOŁĄCZ warunek, który łączy te dwie rzeczy
  • wypowiedzi dotyczące przypadków, w których występuje DOPASOWANIE (wiersze istnieją zarówno w źródle, jak i celu), NIE DOPASOWANE (gdy wiersz nie istnieje jeszcze w miejscu docelowym) i tak dalej

Więc zasadniczo definiujesz coś takiego:

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)

Odbywa się to jako jedno polecenie i wysoce zoptymalizowane przez 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. Pierwsza publiczna wersja zapoznawcza SQL Server 2019:CTP 2.0

  2. Kopia zapasowa/przywracanie serwera SQL Server a odłączanie/dołączanie

  3. Porównanie maszyn wirtualnych w chmurze z zarządzaną bazą danych w chmurze

  4. JPA SQL Server bez mapowania dialektu dla typu JDBC:-9

  5. Czy indeksy klastrowe muszą być unikatowe?