Ricerca…


Sintassi

  • Tabella UPDATE
    SET nome_colonna = valore , nome_colonna2 = valore_2 , ..., nome_colonna_n = valore_n
    Condizione WHERE ( operatore logico condizione_n)

Aggiornamento di tutte le righe

Questo esempio utilizza la tabella Cars dai database di esempio.

UPDATE Cars
SET Status = 'READY'

Questa istruzione imposterà la colonna "status" di tutte le righe della tabella "Cars" in "READY" perché non ha una clausola WHERE per filtrare il set di righe.

Aggiornamento delle righe specificate

Questo esempio utilizza la tabella Cars dai database di esempio.

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

Questa affermazione imposta lo stato della riga di "Auto" con ID 4 su "PRONTO".

WHERE clausola WHERE contiene un'espressione logica che viene valutata per ogni riga. Se una riga soddisfa i criteri, il suo valore viene aggiornato. Altrimenti, una riga rimane invariata.

Modifica dei valori esistenti

Questo esempio utilizza la tabella Cars dai database di esempio.

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

Le operazioni di aggiornamento possono includere i valori correnti nella riga aggiornata. In questo semplice esempio TotalCost viene incrementato di 100 per due righe:

  • La TotalCost di Car # 3 è aumentata da 100 a 200
  • La TotalCost di Car # 4 è aumentata da 1254 a 1354

Il nuovo valore di una colonna può essere derivato dal suo valore precedente o dal valore di qualsiasi altra colonna nella stessa tabella o tabella unita.

AGGIORNA con i dati di un'altra tabella

Gli esempi che seguono riempiono un PhoneNumber di PhoneNumber per qualsiasi dipendente che sia anche un Customer e attualmente non ha un numero di telefono impostato nella tabella dei Employees .

(Questi esempi utilizzano le tabelle Dipendenti e Clienti dai database di esempio.)

SQL standard

Aggiornamento utilizzando una sottoquery correlata:

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

Aggiorna usando 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

server SQL

Aggiornamento con 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

Catturare record aggiornati

A volte uno vuole catturare i record che sono stati appena aggiornati.

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow