Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So durchlaufen Sie alle Tabellen in einer Datenbank, um Spalten zu aktualisieren

Eine schmerzlose Option wäre, eine Abfrage zu erstellen, die das UPDATE generiert Anweisungen, die Sie für alle Tabellen ausführen möchten:

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

Sie können die Ausgabe dieser Abfrage kopieren, in den Abfrage-Editor einfügen und ausführen.

Aktualisierung:

Wie @PaulSpiegel betonte, könnte die obige Lösung unpraktisch sein, wenn man einen Editor wie HeidiSQL verwendet, da jeder Datensatz in der Ergebnismenge manuell kopiert werden müsste. Anwenden eines Tricks mit GROUP_CONCAT() würde einen einzelnen String ergeben, der jedes gewünschte UPDATE enthält Abfrage darin:

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