Mysql: retrouver toutes les tables qui contiennent un champ donné

J’ai eu besoin pour une migration de retrouver toutes les tables qui contenaient un champ spécifique : tag_id

Mysql fournit une base spéciale « information_schema » qui contient toutes les informations sur les noms de bases, de tables et colonnes (entre autres). Le détail des tables de cette base est disponible dans la documentation MySQL.

Pour retrouver un champ en particulier, il faut interroger la table columns :

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME IN ('tag_id')
    AND TABLE_SCHEMA='750g';

Exemple de résultats :

bloc
link
multicontent
tags_recipes

J’ai filtré ici sur TABLE_SCHEMA pour n’afficher que les résultats de la base sur laquelle je travaille.