2017-06-07 7 views
0

Ich habe eine Abfrage wie unten in MYSQL. Diese Abfrage gibt mir eine Liste von Tabellennamen ohne bestimmte spezielle Zeichen in den Spaltennamen.Verbinden Sie zwei Abfragen in MySQL, um das Ergebnis einer Abfrage mit einer anderen zu verknüpfen

select distinct A.table_name from (select TABLE_NAME from information_schema.columns where TABLE_SCHEMA = 'testing' order by TABLE_NAME) A LEFT JOIN 
(select table_name from information_schema.columns where (COLUMN_NAME like '% %' or COLUMN_NAME like '%{%' or COLUMN_NAME like '%(%' or COLUMN_NAME like '%;%' 
or COLUMN_NAME like '%.%') and TABLE_SCHEMA = 'testing' order by TABLE_NAME) B ON (A.TABLE_NAME=B.TABLE_NAME) where B.table_name IS NULL 

Ergebnis der obigen Abfrage:

100_test 
101_test 
102_backup 
103_backup 

Ich habe eine andere Abfrage wie folgt:

select src_table,dst_table from test.mapping 

Hier test Datenbank und mapping ist der Name der Tabelle.

Ergebnis:

100_test 100_testing 
101_test 101_testing 
102_backup 102_backup_old 
103_backup 103_backup_old 
105_old_test 105_archived 

Jetzt möchte ich eine Abfrage erstellen, die mich src_table und dst_table von test.mapping für jede Tabelle des Ergebnisses der 1st Abfrage gibt.

Ich möchte beide Abfragen als eine einzelne Abfrage verbinden, die mir wie zur Folge gibt unter

100_test 100_testing 
101_test 101_testing 
102_backup 102_backup_old 
103_backup 103_backup_old 

Wie kann ich das erreichen?

Antwort

1
select src_table,dst_table from test.mapping 
where src_table in 
(
select distinct A.table_name from (select TABLE_NAME from information_schema.columns where TABLE_SCHEMA = 'testing' order by TABLE_NAME) A LEFT JOIN 
(select table_name from information_schema.columns where (COLUMN_NAME like '% %' or COLUMN_NAME like '%{%' or COLUMN_NAME like '%(%' or COLUMN_NAME like '%;%' 
or COLUMN_NAME like '%.%') and TABLE_SCHEMA = 'testing' order by TABLE_NAME) B ON (A.TABLE_NAME=B.TABLE_NAME) where B.table_name IS NULL 
) 
Verwandte Themen