sql >> Base de Datos >  >> RDS >> Mysql

MySQL Buscando valor en múltiples bases de datos

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'
;