Dit zou je op weg moeten helpen:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Hieruit kunt u de resultaten gebruiken in elke programmeertaal die u gebruikt om query's op te stellen die specifiek zijn voor elk van die databases.
Als alternatief heb ik de laatste tijd ervaren dat borderline-misbruik vergelijkbaar is met dit nuttig.
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'
;
De resultaten hiervan voeg je samen met UNION
tussen, en de resulterende zoekopdracht zou u een lijst moeten geven van alle schema's die een tabel hebben met die naam (en kolom) waarvan de waarde overeenkomt met searchId.
Bewerken:Ongepaste backticks hierboven vervangen door enkele aanhalingstekens, en... dit hieronder toegevoegd.
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'
;