如何从SHOW COLUMNS语句的输出结果中选取指定列
报错原因
你的判断完全正确。SHOW COLUMNS是数据库内置的元数据查看命令,不属于标准DQL查询语句,它输出的结果集不能被当作可查询的表/派生表直接嵌入子查询,因此你写的嵌套SELECT语句会触发语法报错。
实现方法
不要嵌套SHOW COLUMNS语句,直接查询标准系统元数据视图information_schema.COLUMNS即可,这是所有兼容ANSI SQL标准的数据库都支持的访问方式,可以自由选取需要的列、添加筛选条件,灵活度远高于SHOW COLUMNS类快捷命令:
SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = 'A' -- 如果你的实例下有多个库/schema,需要补充指定所属库,避免匹配到其他库下的同名表 -- AND TABLE_SCHEMA = '当前使用的数据库名' ;
不同数据库的补充说明:
- MySQL/MariaDB:除了上述通用写法,也可以用
SHOW COLUMNS FROM A;、DESC A;快捷查看全量字段信息,但这两个命令的返回结果都不支持直接嵌套子查询取单列,需要单列结果时优先用information_schema方案 - PostgreSQL:通用写法完全适用,若表归属非public的自定义schema,必须补充
TABLE_SCHEMA条件做限定 - SQLite:可执行
PRAGMA table_info('A');查看表结构,返回结果中的name列就是字段名;需要做二次查询筛选时,可关联sqlite_master系统表实现
内容的提问来源于stack exchange,提问作者user18466310
相关产品推荐
相关产品推荐

