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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow