我们有1个主要的(MySQL)数据库(main
),其中包含常规信息,包括供用户使用的表以及一些信息。
此外,我们为每个公司(main_1
,main_2
,...)有一个数据库,还有一个用于(重复)用户的表。
第二层用户表包含第一层用户所没有的信息。
因此,我们需要使用第2层数据库中的值来过滤第1层数据库中的用户。
我知道我们可以使用以下方法获取数据库列表:
SELECT *
FROM information_schema.SCHEMATA
WHERE schema_name LIKE "main_%"
但是然后我们需要合并所有数据库中的用户表。
如果有人有一个主意,那就很有责任了。
答案 0 :(得分:0)
例如,您需要构建一条语句以呈现给动态sql
set @sql =
(select group_concat('select * from ', schema_name,'.users union all ')
from
(
SELECT schema_name FROM information_schema.SCHEMATA
) s
)
;
set @sql = replace(@sql,',', ' ');
set @sql = substring(@sql, 1, length(@sql) - 11);
set @sql = concat(@sql,';');
产生(在我的数据库中)
select @sql
select * from bank.users union all
select * from classicmodels.users union all
select * from information_schema.users union all
select * from mysql.users union all
select * from performance_schema.users union all
select * from sandbox.users union all
select * from test.users;
然后您提交
prepare sqlstmt from @sql;
execute sqlstmt;
deallocate prepare sqlstmt;