sql >> Databáze >  >> RDS >> Sqlserver

T-SQL Je možné provést aktualizaci / vložení jednou rychlou operací

SQL Server 2008 a novější mají příkaz MERGE, který přesně to dělá.

Podívejte se na dokumenty MSDN Books Online o MERGE pro podrobnosti.

V zásadě potřebujete čtyři věci:

  • zdroj (tabulka nebo zobrazení nebo vložený příkaz SELECT)
  • cíl
  • a PŘIPOJIT SE stav, který tyto dva spojuje
  • příkazy pro případy, kdy existuje SHODA (řádky existují jak ve zdroji, tak v cíli), NOT MATCHED (když řádek v cíli ještě neexistuje) a tak dále

Takže v podstatě definujete něco jako:

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)

To se provádí jako jeden příkaz a je vysoce optimalizováno serverem SQL.




  1. MySQL porovnejte now() (pouze datum, nikoli čas) s polem datetime

  2. Postgres:Získejte minimální a maximální počet řádků v relační tabulce mnoho k mnoha

  3. Je sdružování připojení nutností v ODP.NET?

  4. Výkon Android Sqlite