En este tutorial, repasaremos las diversas formas de actualizar filas en una tabla usando SQL, pasando de actualizaciones más generales a métodos más específicos.
Actualización completa
Si todos los campos deben actualizarse al mismo valor, puede hacerlo con un simple UPDATE
comando.
UPDATE table
SET col = new_value;
Actualización condicional
Para hacer una actualización condicional dependiendo de si el valor actual de una columna coincide con la condición, puede agregar un WHERE
cláusula que así lo especifica. La base de datos primero encontrará filas que coincidan con WHERE
cláusula y luego solo realizar actualizaciones en esas filas.
UPDATE table
SET col = new_value
WHERE col = old_value;
Para ampliar esto, puede agregar cualquier cosa al WHERE
cláusula que desee, siempre que sea una expresión válida. Entonces, para realizar una actualización basada en el valor de otra columna en la misma tabla, podría ejecutar lo siguiente:
UPDATE table
SET col = new_value
WHERE other_col = some_other_value;
Desde el WHERE
La cláusula puede contener cualquier expresión válida, también tiene la posibilidad de realizar actualizaciones donde varias columnas cumplen los criterios
UPDATE table
SET col = new_value
WHERE col = old_value
AND other_col = some_other_value;
UPDATE table
SET col = new_value
WHERE col = old_value
OR other_col = some_other_value;
Como puede ver, puede expandir el WHERE
cláusula tanto como desee para filtrar las filas para actualizar lo que necesita.
Ahora, ¿qué sucede si desea actualizar filas en una tabla según la condición de otra tabla? Esta pregunta lleva a algunas formas diferentes de hacerlo.
Desde el WHERE
cláusula puede contener cualquier expresión válida, podría usar una subconsulta:
UPDATE table
SET col = new_value
WHERE other_col IN (
SELECT other_col
FROM other_table
WHERE conditional_col = 1
);
También puede usar una subconsulta en el SET
parte de la declaración si desea establecer la columna en un valor en otra tabla
UPDATE table
SET col = (
SELECT other_col
FROM other_table
WHERE other_table.table_id = table.id
);
Quizás una forma más fácil es especificar varias tablas después de UPDATE
cláusula. Solo el SET
expresión realizará actualizaciones, pero la lista de tablas adicionales permitirá que se incluyan las tablas.
UPDATE table, other_table
SET table.col = other_table.other_col
WHERE table.id = other_table.table_id;
De manera similar a expandir WHERE
cláusula, la cantidad de tablas se puede expandir para incluir todas las tablas que necesita si tiene varias tablas que deben unirse.