sql >> Databasteknik >  >> RDS >> Mysql

Hur man går igenom alla tabeller i en databas för att uppdatera kolumner

Ett smärtfritt alternativ skulle vara att skapa en fråga som genererar UPDATE satser du vill köra på alla tabeller:

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 kopiera utdata från den här frågan, klistra in den i frågeredigeraren och köra den.

Uppdatering:

Som @PaulSpiegel påpekade kan ovanstående lösning vara obekväm om man använder en editor som HeidiSQL, eftersom det skulle kräva manuell kopiering av varje post i resultatuppsättningen. Använda ett trick med GROUP_CONCAT() skulle ge en enda sträng som innehåller alla önskade UPDATE fråga i den:

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. Hur ändrar jag db-schema till dbo

  2. Hur infogar man en kolumn i en specifik position i oracle utan att tappa och återskapa tabellen?

  3. Är det möjligt att ha en standardparameter för en lagrad mysql-procedur?

  4. Storlek på partitionstabell i PostgreSQL 9.0