sql >> Base de Datos >  >> RDS >> Mysql

Cómo recorrer todas las tablas en una base de datos para actualizar columnas

Una opción sencilla sería crear una consulta que genere el UPDATE instrucciones que desea ejecutar en todas las tablas:

SELECT CONCAT('UPDATE ', a.table_name, ' SET date = "2016-04-20" WHERE name = "Example";')
FROM information_schema.tables a
WHERE a.table_schema = 'YourDBNameHere'

Puede copiar el resultado de esta consulta, pegarlo en el editor de consultas y ejecutarlo.

Actualización:

Como señaló @PaulSpiegel, la solución anterior podría ser un inconveniente si se utiliza un editor como HeidiSQL, ya que requeriría copiar manualmente cada registro en el conjunto de resultados. Empleando un truco usando GROUP_CONCAT() daría una sola cadena que contiene cada UPDATE deseado consulta en él:

SELECT GROUP_CONCAT(t.query SEPARATOR '; ')
FROM
(
    SELECT CONCAT('UPDATE ', a.table_name,
                  ' SET date = "2016-04-20" WHERE name = "Example";') AS query,
        '1' AS id
    FROM information_schema.tables a
    WHERE a.table_schema = 'YourDBNameHere'
) t
GROUP BY t.id