sql >> Database >  >> RDS >> Sqlserver

T-SQL Is het mogelijk om een ​​Update / Insert te doen met een enkele snelle handeling?

SQL Server 2008 en nieuwer hebben een MERGE-instructie die precies dat doet.

Zie de MSDN Books Online-documenten over MERGE voor details.

In principe heb je vier dingen nodig:

  • een bron (tabel of weergave of inline SELECT-instructie)
  • een doel
  • een DOEN voorwaarde die de twee verbindt
  • instructies voor gevallen waarin er een MATCH is (rijen bestaan ​​in zowel bron als doel), NOT MATCHED (wanneer rij nog niet bestaat in het doel) enzovoort

Dus je definieert eigenlijk zoiets als:

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)

Dit wordt gedaan als één statement en sterk geoptimaliseerd door SQL Server.




  1. Oracle vergelijkt twee verschillende datums

  2. MySQLI Connect-fout toont wachtwoord

  3. Hoe kan ik een veld van mijn spinner bijwerken met gebruikersinvoer in EditText

  4. voeg elk jaar verjaardagsgebeurtenissen toe aan de volledige kalender van jQuery