mysql - 使用所有数据库中用户表中的字段

标签 mysql sql

我们有 1 个主 (MySQL) 数据库 (main),它保存一般信息,包括一个包含一些信息的用户表。

接下来,我们为每个公司提供了 1 个数据库(main_1main_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/

相关文章:

mysql - 如何将 INSERT ... SELECT 与特定列自动递增(从 1 开始)一起使用?

sql - 丢弃该组中不是 MAX 的行

mysql - 创建时间戳为同一天的新表

php - 使用 jquery-select2 动态依赖下拉列表

mysql - 根据排序结果选择条件+另一个条件

mysql - 如何将mysql表 append 到不同数据库中的另一个表

java - 在单个语句中在 java 中执行的多个查询

sql - DBD::CSV 和占位符

没有 "CREATE ALGORITHM"和 "DEFINER"的 mysqldump

mysql - 根据 IP 地址对大量帖子进行地理定位。 (880,000 行)