Cela devrait vous aider à démarrer :
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
À partir de là, vous pouvez utiliser les résultats dans le langage de programmation que vous utilisez pour composer des requêtes spécifiques à chacune de ces bases de données.
Alternativement, j'ai trouvé des abus limites similaires à celui-ci ces derniers temps.
SELECT CONCAT("SELECT '", table_schema, "' "
"FROM `", table_schema, "`.`", table_name, "` "
"WHERE `", column_name, "` = ", searchId
) AS qStr
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Vous concaténez les résultats de ceci ensemble, avec UNION
entre, et la requête résultante devrait vous donner une liste de tous les schémas qui ont une table avec ce nom (et cette colonne) dont la valeur correspond à searchId.
Modifier :Remplacé les backticks inappropriés ci-dessus par des guillemets simples, et... ajouté ceci ci-dessous.
SET @criteriaVal := "'somestring'";
-- SET @criteriaVal := 3; -- for example
SELECT CONCAT("SELECT '", table_schema, "' "
"FROM `", table_schema, "`.`", table_name, "` "
"WHERE `", column_name, "` = ", @criteriaVal
) AS qStr
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;