У меня есть таблица со следующей структурой:Получить содержание столбцов, начиная с подстроки
| ID | abc1 | abc2 | abc3 | def1 | def2 | def3 |
|----|--------|--------|--------|--------|--------|--------|
| 1 | Text 1 | Text 2 | Text 3 | Text A | Text B | Text C |
| 2 | Text 4 | Text 5 | Text 6 | Text D | Text E | Text F |
Теперь я хочу, чтобы получить содержимое всех столбцов, начиная с abc
.
С
select column_name from information_schema.columns
where table_name='tab1'
and (column_name like 'abc%')
я получаю необходимые столбцы:
abc1
abc2
abc3
Как я могу получить их содержание, а? Таким образом, желаемый результат будет:
| abc1 | abc2 | abc3 |
|--------|--------|--------|
| Text 1 | Text 2 | Text 3 |
| Text 4 | Text 5 | Text 6 |
Мой подход был поставить этот запрос в другой запрос, как это:
select (select column_name from information_schema.columns
where table_name='tab1'
and (column_name like 'abc%'))
from tab1
Но я получаю эту ошибку:
Subquery returns more than 1 row
Вы должны использовать динамический SQL и выполнить его. – xQbert
@xQbert: Не могли бы вы привести мне пример? – user1170330
Ответ TimoSolo, кажется, дает хороший пример: http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure Как вы могли бы передать имя вашей таблицы и cols из ваш внутренний запрос. Обратите внимание, что вам, вероятно, придется использовать Group_concat (column_name SEPARATOR ',') 'для объединения полей – xQbert