Dies sollte Ihnen den Einstieg erleichtern:
SELECT table_schema
FROM information_schema.columns
WHERE table_name = 'table1' AND column_name = 'id'
;
Daraus können Sie die Ergebnisse in jeder Programmiersprache verwenden, die Sie verwenden, um Abfragen zu erstellen, die für jede dieser Datenbanken spezifisch sind.
Alternativ fand ich in letzter Zeit ähnlich grenzwertige Missbräuche hilfreich.
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'
;
Die Ergebnisse davon verketten Sie mit UNION
between, und die resultierende Abfrage sollte Ihnen eine Liste aller Schemas geben, die eine Tabelle mit diesem Namen (und dieser Spalte) haben, deren Wert mit searchId übereinstimmt.
Bearbeiten:Ersetzte unangemessene Backticks oben durch einfache Anführungszeichen und ... fügte dies unten hinzu.
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'
;