Sök…


Syntax

  • UPDATE- tabell
    SET column_name = value , column_name2 = value_2 , ..., column_name_n = value_n
    VAR villkor ( logiskt operatörens villkor_n)

Uppdatera alla rader

I det här exemplet används biltabellen från exempeldatabaserna.

UPDATE Cars
SET Status = 'READY'

Detta uttalande sätter kolumnen "status" för alla rader i "Cars" -tabellen till "KLAR" eftersom den inte har en WHERE klausul för att filtrera uppsättningen av rader.

Uppdatera specificerade rader

I det här exemplet används biltabellen från exempeldatabaserna.

UPDATE 
    Cars
SET 
    Status = 'READY'
WHERE 
    Id = 4

Detta uttalande ställer in statusen för raden med "Bilar" med ID 4 till "KLAR".

WHERE klausulen innehåller ett logiskt uttryck som utvärderas för varje rad. Om en rad uppfyller kriterierna uppdateras dess värde. Annars förblir en rad oförändrad.

Ändra befintliga värden

I det här exemplet används biltabellen från exempeldatabaserna.

UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4

Uppdateringsoperationer kan inkludera aktuella värden i den uppdaterade raden. I detta enkla exempel TotalCost med 100 för två rader:

  • TotalCost of Car # 3 höjs från 100 till 200
  • TotalCost of Car # 4 ökas från 1254 till 1354

En kolumns nya värde kan härledas från dess tidigare värde eller från någon annan kolumns värde i samma tabell eller en sammanfogad tabell.

UPPDATERA med data från en annan tabell

Exemplen nedan fyller i ett PhoneNumber för alla anställda som också är Customer och för närvarande inte har ett telefonnummer som anges i Employees .

(Dessa exempel använder tabellerna Anställda och kunder från exempeldatabaserna.)

Standard SQL

Uppdatera med hjälp av en korrelerad undersökning:

UPDATE 
    Employees
SET PhoneNumber =
    (SELECT 
         c.PhoneNumber
     FROM 
         Customers c
     WHERE 
         c.FName = Employees.FName 
         AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL

SQL: 2003

Uppdatera med MERGE :

MERGE INTO 
    Employees e
USING 
    Customers c 
ON 
    e.FName = c.Fname 
    AND e.LName = c.LName
    AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
   UPDATE 
      SET PhoneNumber = c.PhoneNumber

SQL Server

Uppdatera med INNER JOIN :

UPDATE 
    Employees
SET 
    PhoneNumber = c.PhoneNumber
FROM 
    Employees e
INNER JOIN Customers c
        ON e.FName = c.FName 
        AND e.LName = c.LName
WHERE 
    PhoneNumber IS NULL

Fånga uppdaterade poster

Ibland vill man fånga de poster som just har uppdaterats.

CREATE TABLE #TempUpdated(ID INT)

Update TableName SET Col1 = 42
    OUTPUT inserted.ID INTO #TempUpdated
    WHERE Id > 50


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow