To powinno Cię zacząć:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Na tej podstawie możesz wykorzystać wyniki w dowolnym języku programowania, którego używasz do tworzenia zapytań specyficznych dla każdej z tych baz danych.
Alternatywnie, ostatnio odkryłem, że nadużycia graniczne podobne do tego są pomocne.
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'
;
Łączysz wyniki tego razem za pomocą UNION
pomiędzy, a wynikowe zapytanie powinno dać listę wszystkich schematów, które mają tabelę o tej nazwie (i kolumnie), której wartość odpowiada searchId.
Edycja:zamieniono nieodpowiednie znaki wsteczne na pojedyncze cudzysłowy i... dodano to poniżej.
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'
;