sql >> Database >  >> RDS >> Mysql

Hoe u door alle tabellen in een database kunt lopen om kolommen bij te werken?

Een eenvoudige optie zou zijn om een ​​query te maken die de UPDATE . genereert uitspraken die u op alle tabellen wilt uitvoeren:

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

U kunt de uitvoer van deze query kopiëren, in de query-editor plakken en uitvoeren.

Bijwerken:

Zoals @PaulSpiegel opmerkte, kan de bovenstaande oplossing onhandig zijn als men een editor zoals HeidiSQL gebruikt, omdat het handmatig kopiëren van elk record in de resultatenset zou vereisen. Een truc toepassen met GROUP_CONCAT() zou een enkele string geven met elke gewenste UPDATE vraag erin:

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. Hoe om te gaan met te veel gelijktijdige verbindingen, zelfs na gebruik van een verbindingspool?

  2. mysql-query van een datum, tussen twee datumvelden

  3. Wat te doen als je gehele getallen groter dan 20 cijfers nodig hebt op mysql?

  4. Fout bij het migreren van postgresql db naar mysql met workbench