我们有 1 个主 (MySQL) 数据库 (main
),它保存一般信息,包括一个包含一些信息的用户表。
接下来,我们为每个公司提供了 1 个数据库(main_1
、main_2
...),还有一个用于(重复)用户的表。
第二层用户表包含第一层没有的信息。
因此,我们需要使用第 2 层数据库中的值过滤第 1 层数据库中的用户。
我知道我们可以使用以下方法获取数据库列表:
SELECT *
FROM information_schema.SCHEMATA
WHERE schema_name LIKE "main_%"
但是我们需要合并所有数据库中的用户表。
如果有人有想法,非常感谢。
最佳答案
例如,您需要构建一个用于呈现动态 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;
关于mysql - 使用所有数据库中用户表中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626836/