Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Buscando valor em vários bancos de dados


Isso deve começar:
SELECT table_schema 
FROM information_schema.columns 
WHERE table_name = 'table1' AND column_name = 'id'
;

A partir disso, você pode usar os resultados em qualquer linguagem de programação que esteja usando para compor consultas específicas para cada um desses bancos de dados.

Alternativamente, tenho achado úteis abusos limítrofes semelhantes a esse ultimamente.
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'
;

Você concatena os resultados disso juntos, com UNION entre, e a consulta resultante deve fornecer uma lista de todos os esquemas que possuem uma tabela com esse nome (e coluna) cujo valor corresponde a searchId.

Edit:Substituí os acentos graves inapropriados acima por aspas simples e... adicionei isso abaixo.
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'
;