Esto debería ayudarlo a comenzar:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
A partir de esto, puede usar los resultados en cualquier lenguaje de programación que esté usando para componer consultas específicas para cada una de esas bases de datos.
Alternativamente, últimamente he encontrado útiles abusos límite similares a este.
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'
;
Concatenas los resultados de esto juntos, con UNION
entre, y la consulta resultante debería darle una lista de todos los esquemas que tienen una tabla con ese nombre (y columna) cuyo valor coincide con searchId.
Editar:reemplazó las tildes inapropiadas arriba con comillas simples y... agregó esto a continuación.
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'
;