Szukaj…


Składnia

  • Tabela aktualizacji
    SET nazwa_kolumny = wartość , nazwa_kolumny2 = wartość_2 , ..., nazwa_kolumny_n = wartość_n
    GDZIE warunek ( operator logiczny warunek_n )

Aktualizowanie wszystkich wierszy

W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.

UPDATE Cars
SET Status = 'READY'

Ta instrukcja ustawi kolumnę „status” wszystkich wierszy tabeli „Cars” na „READY”, ponieważ nie ma klauzuli WHERE do filtrowania zestawu wierszy.

Aktualizowanie określonych wierszy

W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.

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

Ta instrukcja ustawi status wiersza „Samochody” o identyfikatorze 4 na „GOTOWE”.

Klauzula WHERE zawiera wyrażenie logiczne, które jest oceniane dla każdego wiersza. Jeśli wiersz spełnia kryteria, jego wartość jest aktualizowana. W przeciwnym razie wiersz pozostaje niezmieniony.

Modyfikowanie istniejących wartości

W tym przykładzie użyto tabeli samochodów z przykładowych baz danych.

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

Operacje aktualizacji mogą obejmować bieżące wartości w zaktualizowanym wierszu. W tym prostym przykładzie TotalCost jest zwiększany o 100 dla dwóch wierszy:

  • Koszt całkowity samochodu nr 3 został zwiększony ze 100 do 200
  • Koszt całkowity samochodu nr 4 został zwiększony z 1254 do 1354

Nowa wartość kolumny może pochodzić z poprzedniej wartości lub z dowolnej innej wartości kolumny w tej samej tabeli lub tabeli połączonej.

AKTUALIZACJA z danymi z innej tabeli

Poniższe przykłady wypełnić PhoneNumber dla każdego pracownika, który jest również Customer i aktualnie nie posiada zestaw numer telefonu w Employees tabeli.

(W tych przykładach wykorzystano tabele pracowników i klientów z przykładowych baz danych).

Standardowy SQL

Zaktualizuj za pomocą skorelowanego podzapytania:

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

Zaktualizuj za pomocą 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

Aktualizacja za pomocą 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

Przechwytywanie zaktualizowanych rekordów

Czasami chce się przechwycić akta, które właśnie zostały zaktualizowane.

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow