Предположим, у меня есть данные со столбцами:
aa1, aa2, aa3, aa4, aa5, aa6
и так далее.
Я ищу выбранный запрос, где я могу просто упомянуть что-то вроде:
select aa[1 to n] from table
...
Есть ли способ сделать это напрямую?
Спасибо
В 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 говорится: "Не используйте представления INFORMATION_SCHEMA для определения схемы объекта. Единственный надежный способ найти схему объекта - запросить представление каталога sys.objects ".