假设我有一个包含列的数据:
aa1、aa2、aa3、aa4、aa5、aa6
诸若此类。
我正在寻找一个select查询,在这个查询中,我可以只提到如下内容:
select aa[1 to n] from table...
有没有办法直接做呢?
谢谢
发布于 2017-12-12 23:08:53
在MariaDB中,数据库information_schema中有一个系统设置,其中定义了所有模式、表、列等。
使用它,您可以列出有关该表的所有详细信息,并根据需要使用它来组成“动态”查询。
表定义示例:
CREATE TABLE `tablename` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`aa1` INT(11) NULL DEFAULT NULL,
`aa2` INT(11) NULL DEFAULT NULL,
`aa3` INT(11) NULL DEFAULT NULL,
`aa4` INT(11) NULL DEFAULT NULL,
`aa5` INT(11) NULL DEFAULT NULL,
`aa6` INT(11) NULL DEFAULT NULL,
`aa7` INT(11) NULL DEFAULT NULL,
`aa8` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=3
;对information_schema的查询以列出这些表:
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.`COLUMNS`
WHERE TABLE_SCHEMA = 'stackoverflow'
AND TABLE_NAME = 'tablename'
AND COLUMN_NAME LIKE 'aa%'结果是:
aa1,aa2,aa3,aa4,aa5,aa6,aa7,aa8因此,您可以根据需要构建查询。
编辑:
在SQL documentation中有这样一句话:“不要使用INFORMATION_SCHEMA视图来确定对象的模式。查找对象模式的唯一可靠方法是查询sys.objects目录视图。”
https://stackoverflow.com/questions/47775351
复制相似问题