sql >> Databáze >  >> RDS >> Mysql

MySQL Hledání hodnoty ve více databázích

Toto by vám mělo začít:

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

Z toho můžete výsledky použít v jakémkoli programovacím jazyce, který používáte, k vytváření dotazů specifických pro každou z těchto databází.

Alternativně jsem v poslední době shledal hraniční zneužívání podobné tomuto užitečné.

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

Výsledky zřetězíte dohromady pomocí UNION mezi a výsledný dotaz by vám měl poskytnout seznam všech schémat, která mají tabulku s tímto názvem (a sloupcem), jejichž hodnota odpovídá searchId.

Upravit:Nevhodná zpětná zaškrtnutí nahoře byla nahrazena jednoduchými uvozovkami a...toto přidáno níže.

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. Jaká datová struktura se používá v MySql?

  2. #1214 - Použitý typ tabulky nepodporuje FULLTEXTOVÉ indexy

  3. Oracle SQL není skupina podle výrazu při počítání

  4. Jaký je rozdíl mezi SERIAL a AUTO_INCREMENT v mysql