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