sql >> Database teknologi >  >> RDS >> Mysql

MySQL Søger efter værdi på tværs af flere databaser

Dette burde få dig i gang:

SELECT table_schema 
FROM information_schema.columns 
WHERE table_name = 'table1' AND column_name = 'id'
;
 

Ud fra dette kan du bruge resultaterne i det programmeringssprog, du bruger, til at komponere forespørgsler, der er specifikke for hver af disse databaser.

Alternativt har jeg fundet grænseoverskridelser, der ligner dette, nyttige på det seneste.

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

Du sammenkæder resultaterne af dette sammen med UNION mellem, og den resulterende forespørgsel skulle give dig en liste over alle skemaer, der har en tabel med det navn (og kolonne), hvis værdi matcher søge-id.

Rediger:Udskiftede upassende backticks ovenfor med enkelte anførselstegn, og... tilføjede dette nedenfor.

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


  1. Hvordan udlæser kombinerede resultater fra to MySQL-tabeller ved hjælp af PDO

  2. PostgreSQL installation på Docker

  3. BCrypt Bekræft gemt adgangskode-hash

  4. Hvordan Oracle Index klyngefaktor beregnes