Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przejść przez wszystkie tabele w bazie danych, aby zaktualizować kolumny?

Jedną z bezbolesnych opcji byłoby utworzenie zapytania, które generuje UPDATE wyciągi, które chcesz uruchomić na wszystkich stołach:

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

Możesz skopiować wynik tego zapytania, wkleić go do edytora zapytań i uruchomić.

Aktualizacja:

Jak zauważył @PaulSpiegel, powyższe rozwiązanie może być niewygodne w przypadku korzystania z edytora takiego jak HeidiSQL, ponieważ wymagałoby ręcznego kopiowania każdego rekordu w zestawie wyników. Stosowanie triku za pomocą GROUP_CONCAT() dałby pojedynczy ciąg zawierający wszystkie żądane UPDATE zapytanie w nim:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Liczba kolumn mysql.proc jest nieprawidłowa. Oczekiwano 20, znaleziono 16. Tabela jest prawdopodobnie uszkodzona

  2. Składnia MySQL do wstawiania nowego wiersza w środkowych wierszach?

  3. Wydajność zapytań w dwóch bazach mysql na tym samym serwerze?

  4. Tekst w języku bengalskim nie jest wyświetlany w pliku CSV Unicode

  5. Zapytanie o wybór ciągów kończy się określonym znakiem