Buscar..
Sintaxis
- Tabla de actualización
SET nombre_columna = valor, COLUMN_NAME2 = valor_2, ..., column_name_n = Valor_N
DONDE condición (condición de operador lógico )
Actualizando todas las filas
Este ejemplo utiliza la tabla de coches de las bases de datos de ejemplo.
UPDATE Cars
SET Status = 'READY'
Esta declaración establecerá la columna 'estado' de todas las filas de la tabla 'Automóviles' en "LISTO" porque no tiene una cláusula WHERE
para filtrar el conjunto de filas.
Actualización de filas especificadas
Este ejemplo utiliza la tabla de coches de las bases de datos de ejemplo.
UPDATE
Cars
SET
Status = 'READY'
WHERE
Id = 4
Esta declaración establecerá el estado de la fila de 'Cars' con id 4 en "READY".
WHERE
cláusula WHERE
contiene una expresión lógica que se evalúa para cada fila. Si una fila cumple con los criterios, su valor se actualiza. De lo contrario, una fila se mantiene sin cambios.
Modificar valores existentes
Este ejemplo utiliza la tabla de coches de las bases de datos de ejemplo.
UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4
Las operaciones de actualización pueden incluir valores actuales en la fila actualizada. En este ejemplo simple, el TotalCost
se incrementa en 100 para dos filas:
- El TotalCost del Auto # 3 se incrementa de 100 a 200.
- El TotalCost del Auto # 4 se incrementó de 1254 a 1354
El nuevo valor de una columna se puede derivar de su valor anterior o de cualquier otro valor de columna en la misma tabla o en una tabla combinada.
ACTUALIZAR con datos de otra tabla
Los ejemplos a continuación completan un PhoneNumber
de PhoneNumber
para cualquier empleado que también sea Customer
y que actualmente no tenga un número de teléfono configurado en la Tabla de Employees
.
(Estos ejemplos utilizan las tablas Empleados y Clientes de las Bases de datos de ejemplo).
SQL estándar
Actualización utilizando una subconsulta correlacionada:
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
Actualizar utilizando 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
servidor SQL
Actualizar usando 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
Capturando registros actualizados
A veces uno quiere capturar los registros que se acaban de actualizar.
CREATE TABLE #TempUpdated(ID INT)
Update TableName SET Col1 = 42
OUTPUT inserted.ID INTO #TempUpdated
WHERE Id > 50