sql >> Databasteknik >  >> RDS >> Mysql

MySQL Söker efter värde i flera databaser

Detta bör få dig igång:

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

Från detta kan du använda resultaten i vilket programmeringsspråk du än använder för att skapa frågor som är specifika för var och en av dessa databaser.

Alternativt har jag tyckt att borderline-missbruk liknande detta är till hjälp på sistone.

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 sammanfogar resultaten av detta med UNION mellan, och den resulterande frågan bör ge dig en lista över alla scheman som har en tabell med det namnet (och kolumnen) vars värde matchar sök-ID.

Redigera:Ersatte olämpliga backticks ovan med enkla citattecken, och... lade till detta nedan.

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. Laravel frågebyggare för rekursiva resultat? T.ex. id, parent_id

  2. Grunderna i SQL Server Transaction Log

  3. Kan jag ha ett sammansatt index på när jag använder en vänsterkoppling

  4. Anslut MySQL via localhost fungerar inte men 127.0.0.1 fungerar