2017-06-07 14 views
0

MYSQLに以下のようなクエリがあります。このクエリは、カラム名に特定の特殊文字を含まないテーブル名のリストを提供します。上記のクエリのMySQLで2つのクエリを結合して1つのクエリの結果を別のクエリにマップする

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 

結果:

100_test 
101_test 
102_backup 
103_backup 

私は以下のような別のクエリを持っている:ここでは

select src_table,dst_table from test.mapping 

testは、データベースであるとmappingはテーブル名です。

結果:

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

は、今私は1stクエリの結果の各テーブルにtest.mappingから私はSRC_TABLEとdst_table与えクエリを作成したいです。

私は私が

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

どのように私はそれを達成することができ、以下のような結果与え、単一のクエリとして両方のクエリに参加したいですか?

答えて

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 
) 
関連する問題