何とか可能です。しかし、列(id、first_name、last_name、table_name)を持つ単一のテーブルを使用してみませんか?それはパフォーマンスだろう適切なインデックス付き
select
m.id, m.first_name, m.last_name
from
mytable m inner join tables t on
m.table_name = t.table_name
where
t.status='Active'
:クエリは、のような単純なものでしょう。あなたのテーブル構造を変更することなく、
ソリューションは、例えば、動的クエリを必要とするが、私はそれをお勧めしません:
select
group_concat(
concat('select * from ', table_name)
separator ' union all '
) gc
from
status
where
status='Active'
into @sql;
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
(これは文字列のSQLにすべてのクエリ組合が作成され、それがしますテーブルを素早くエスケープする必要があります。また、group_concatのサイズ制限について気をつけてください)
@IlyaI 2番目のソリューションを使用する必要があれば、SET SESSION group_concat_max_len = 1000000;でサイズ制限を変更できます。 – fthiella
I既に最初のソリューションを使用していましたが、複数のテーブルを使用できるかどうかを確認したいと考えました。私は2番目の解決策を試します。ありがとう! –