sql >> Databáze >  >> RDS >> Mysql

Jak procházet všechny tabulky v databázi a aktualizovat sloupce

Jednou bezbolestnou možností by bylo vytvořit dotaz, který generuje UPDATE příkazy, které chcete spustit na všech tabulkách:

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

Výstup z tohoto dotazu můžete zkopírovat, vložit do editoru dotazů a spustit.

Aktualizace:

Jak zdůraznil @PaulSpiegel, výše uvedené řešení může být nepohodlné, pokud člověk používá editor, jako je HeidiSQL, protože by vyžadovalo ruční kopírování každého záznamu ve výsledné sadě. Použití triku pomocí GROUP_CONCAT() by dal jeden řetězec obsahující všechny požadované UPDATE dotaz v něm:

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. Jak mohu získat počet zákazníků za den podle jedinečného a opakujícího se zákazníka pro konkrétní datum?

  2. Vypouštění připojených uživatelů z databáze Oracle

  3. Změna portu serveru postgres kontejnerů v Docker Compose

  4. Galera Cluster Recovery 101 – Hluboký ponor do dělení sítě