MySQL5.7中能否将show tables作为派生表参与join关联查询?
SHOW TABLES 是MySQL专属的展示类命令,不属于标准查询结果集,无法直接作为派生表参与JOIN关联,属于MySQL语法固有约束。
解决方法
MySQL 5.7版本可以通过查询内置的information_schema.TABLES系统元数据表实现需求,该表存储了实例内所有库的表元数据,可以直接作为普通表参与关联查询,对应的表名过滤规则和你原SHOW TABLES LIKE的规则完全兼容。
修正后的SQL示例
SELECT i.* FROM 替换为你的实际业务表名 i LEFT JOIN ( -- 从系统表查询符合规则的表名,别名和你原逻辑保持一致 SELECT TABLE_NAME AS `columnname_from_show_tables` FROM information_schema.TABLES WHERE TABLE_SCHEMA = '替换为你要查询的数据库名' AND TABLE_NAME LIKE 'table_name_pattern_%' ) a ON i.id = MID(a.`columnname_from_show_tables`, 20);
注意事项
- 你原SQL中
FROM table i的table是MySQL关键字,不能直接作为表名使用,请替换为实际的业务表名 - 建议保留
TABLE_SCHEMA过滤条件,避免匹配到其他库中符合命名规则的无关表 - 常规操作账号默认拥有
information_schema系统表的读取权限,无需额外授权
内容的提问来源于stack exchange,提问作者jdog
相关产品推荐
相关产品推荐

