Questo dovrebbe iniziare:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Da questo, puoi utilizzare i risultati in qualsiasi linguaggio di programmazione che stai utilizzando per comporre query specifiche per ciascuno di quei database.
In alternativa, ultimamente ho trovato utili abusi borderline simili a questo.
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'
;
Concateni i risultati di questo insieme, con UNION
tra e la query risultante dovrebbe darti un elenco di tutti gli schemi che hanno una tabella con quel nome (e colonna) il cui valore corrisponde a searchId.
Modifica:sostituiti i backtick inappropriati sopra con virgolette singole e... aggiunto sotto.
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'
;