sql >> Database >  >> RDS >> Mysql

MySQL Zoeken naar waarde in meerdere databases

Dit zou je op weg moeten helpen:

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

Hieruit kunt u de resultaten gebruiken in elke programmeertaal die u gebruikt om query's op te stellen die specifiek zijn voor elk van die databases.

Als alternatief heb ik de laatste tijd ervaren dat borderline-misbruik vergelijkbaar is met dit nuttig.

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

De resultaten hiervan voeg je samen met UNION tussen, en de resulterende zoekopdracht zou u een lijst moeten geven van alle schema's die een tabel hebben met die naam (en kolom) waarvan de waarde overeenkomt met searchId.

Bewerken:Ongepaste backticks hierboven vervangen door enkele aanhalingstekens, en... dit hieronder toegevoegd.

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. Hoe aan de slag met SQLCipher voor Android?

  2. Willekeurige woorden uit de tabel selecteren

  3. Schemapatroon zoeken naar gegevensklasse-associatie

  4. invoegen in tabel selecteer max(kolomnaam)+1