sql >> Database teknologi >  >> RDS >> Mysql

Sådan går du gennem alle tabellerne i en database for at opdatere kolonner

En smertefri mulighed ville være at oprette en forespørgsel, som genererer UPDATE sætninger du vil køre på alle tabellerne:

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

Du kan kopiere outputtet fra denne forespørgsel, indsætte det i forespørgselseditoren og køre det.

Opdatering:

Som @PaulSpiegel påpegede, kan ovenstående løsning være ubelejlig, hvis man bruger en editor som HeidiSQL, fordi det ville kræve manuelt at kopiere hver post i resultatsættet. Brug af et trick ved hjælp af GROUP_CONCAT() ville give en enkelt streng indeholdende hver ønsket UPDATE forespørgsel i det:

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


  1. Neo4j browser

  2. Sådan opsummeres tidsfeltet i SQL Server

  3. Betinget mySQL-erklæring. Hvis sand OPDATERING, hvis falsk INDSÆT

  4. Er der nogen hash-funktion i PL/SQL?