Zoeken…


Syntaxis

  • UPDATE- tabel
    SET kolomnaam = waarde , kolomnaam2 = waarde_2 , ..., kolomnaam_n = waarde_n
    WAAR staat ( logische operator staat_n)

Alle rijen bijwerken

In dit voorbeeld wordt de tabel Auto's uit de voorbeelddatabases gebruikt.

UPDATE Cars
SET Status = 'READY'

Met deze instructie wordt de kolom 'status' van alle rijen van de tabel 'Auto's' ingesteld op 'KLAAR' omdat er geen WHERE clausule is om de set rijen te filteren.

Opgegeven rijen bijwerken

In dit voorbeeld wordt de tabel Auto's uit de voorbeelddatabases gebruikt.

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

Met deze verklaring wordt de status van de rij 'Cars' met id 4 ingesteld op 'READY'.

WHERE component bevat een logische expressie die voor elke rij wordt geëvalueerd. Als een rij aan de criteria voldoet, wordt de waarde bijgewerkt. Anders blijft een rij ongewijzigd.

Bestaande waarden wijzigen

In dit voorbeeld wordt de tabel Auto's uit de voorbeelddatabases gebruikt.

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

Bijwerkbewerkingen kunnen huidige waarden in de bijgewerkte rij bevatten. In dit eenvoudige voorbeeld wordt de TotalCost verhoogd met 100 voor twee rijen:

  • De TotalCost van auto # 3 is verhoogd van 100 naar 200
  • De TotalCost van auto # 4 is verhoogd van 1254 naar 1354

De nieuwe waarde van een kolom kan worden afgeleid van de vorige waarde of van een andere kolomwaarde in dezelfde tabel of een gekoppelde tabel.

UPDATE met gegevens uit een andere tabel

De voorbeelden hieronder te vullen in een PhoneNumber voor elke werknemer die ook een Customer en op dit moment niet over een telefoonnummer set in de Employees tabel.

(In deze voorbeelden worden de tabellen Medewerkers en Klanten uit de voorbeelddatabases gebruikt.)

Standaard SQL

Update met behulp van een gecorreleerde subquery:

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

Update met 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

Update met 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

Bijgewerkte records vastleggen

Soms wil men de records vastleggen die zojuist zijn bijgewerkt.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow