MariaDB使用CTE包裹SHOW TABLES报错,如何获取有序表名列表?
错误原因
你写的SQL报错是因为SHOW TABLES是MariaDB专属的管理命令,不支持直接放到CTE或者普通子查询里作为数据源使用,所以会触发语法错误。
正确查询方案
要获取指定数据库下按字母排序的表名,直接查询系统库information_schema的TABLES表即可,这是关系型数据库获取元数据的标准实现,兼容性更好:
-- 把下方的「你的数据库名」替换为实际要查询的数据库名称 SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库名' ORDER BY TABLE_NAME ASC;
如果需要直接取排序后的第n个表名,搭配LIMIT语法即可,注意LIMIT的偏移量从0开始计数,取第n个对应的偏移量为n-1:
-- 示例:取排序后的第5个表名,偏移量填4 SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库名' ORDER BY TABLE_NAME ASC LIMIT 4,1;
VBA填充复选框建议
你不需要循环查询第n个元素来填充选项,直接执行上面的全量表名查询拿到结果集后,遍历结果集逐行把TABLE_NAME字段的值添加到复选框的选项列表即可,效率更高,逻辑也更简洁。
内容的提问来源于stack exchange,提问作者xvpnkr
相关产品推荐
相关产品推荐

