2017-06-07 14 views
0

Ich habe einige Tabellennamen in test Datenbank in MySQL. Ich habe eine Tabelle mit dem Namen mapping in der Datenbank renamed, die Informationen über Tabellen enthält, die umbenannt wurden.Map Tabellennamen einer Datenbank mit Werten in einer anderen Tabelle

Jetzt möchte ich eine Liste der Tabellen haben, die in test Datenbank sind und ihren umbenannten Namen in der mapping Tabelle.

Tabellen in test

123_abc 
124_abc 
235_test 

Informationen in mapping Tabelle

table  renamed 

123_abc  123_abc_test 
235_test 235_testing 
abc_test abc_test1 

Jetzt mag ich eine Liste, die Tabellennamen enthält, die in test Datenbank und ihre umbenannten Namen in der mapping Tabelle sind in renamed Datenbank Das erwartete Ergebnis ist

123_abc  123_abc_test 
235_test 235_testing 

Wie kann ich das erreichen?

Antwort

0

Sie konnten die information_schema Datenbank verwenden, die Teil von MySQL ist und das alle MySQL-Meta-Informationen enthält (einschließlich Tabellennamen) wie folgt aus:

select t1.TABLE_NAME, t2.table_name 
from information_schema.`TABLES` t1 
where table_schema = 'test' 
inner join renamed.mapping t2 on 
    t1.table_name = t2.table_name 

Zugegeben, mit einem inneren beitreten, werden Sie nur bekommen die Tabellen, die tatsächlich umbenannt werden. Wenn Sie alle Tabellen in Ihrem Testschema verwenden möchten, führen Sie stattdessen eine linke Verknüpfung aus.

1

können Sie geben eine MySQL-Anweisung wie,

select * from renamed.mapping inner join information_schema.tables on renamed.mapping.table_name = information_schema.tables.TABLE_NAME where information_schema.tables.TABLE_SCHEMA='test'

Verwandte Themen