sql >> Database teknologi >  >> RDS >> Sqlserver

T-SQL Er det muligt at lave en Update/Insert med en enkelt hurtig handling

SQL Server 2008 og nyere har en MERGE-sætning, som gør præcis det.

Se MSDN Books Online-dokumenterne på MERGE for detaljer.

Grundlæggende har du brug for fire ting:

  • en kilde (tabel eller visning eller inline SELECT-sætning)
  • et mål
  • a JOIN tilstand, der forbinder de to
  • udsagn for tilfælde, hvor der er en MATCH (rækker findes i både kilde og mål), IKKE MATCHED (når række endnu ikke eksisterer i målet) og så videre

Så du definerer grundlæggende noget som:

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)

Dette gøres som én sætning og meget optimeret af SQL Server.




  1. ORDER BY RAND()-funktionen tager lang tid at udføre i mysql

  2. AWS Datapipeline - problem med tegn med accent

  3. Installer webserver i Windows XP med Apache2, PHP5 og MySQL4 – del 1

  4. håndteringsskinner + postgres og tidszoner