Предположим, у меня есть 3 столбца на выбор: colA
, colB
и colC
.Как условно ВЫБЕРИТЬ несколько столбцов с помощью MySQL?
У нас есть 7 возможностей для выбора из:
single column: colA | colB | colC
double column: colA colB | colA colC | colB colC
triple column: colA colB colC
Я хотел бы сделать запрос, который позволяет мне выбрать, какие столбцы я хочу выбрать. Например, если я хочу, чтобы выбрать столбцы colB
и colC
, то SELECT, должен вернуть
colB colC
---------
1 4
2 5
3 6
---------
я уже искал в течение некоторого времени, и то, что я сталкиваюсь большинство являются CASE
и IF
Control Flow Functions, но я не мог достичь того, что описывается с ними. Например, если я делаю следующий запрос, столбцы, которые не активированные отображаться с NULL значениями (в то время как они не должны отображаться):
SET @colB_switch := 1;
SET @colC_switch := 0;
SELECT
CASE WHEN @colB_switch = 1 THEN colB END,
CASE WHEN @colC_switch = 1 THEN colC END
FROM my_table
Для этого простого случая, я мог бы просто жесткий код каждая возможность, но когда у нас есть десятки столбцов, у нас есть буквально тысячи возможностей!
PS: другой подход будет выбирать, какие столбцы для не показать, может быть, это проще?
вы можете посмотреть http://dev.mysql.com/doc/refman/5.1/de/if-statement.html – Dwza
SQL-запрос имеет фиксированный набор столбцов. Если вы хотите переменный набор столбцов, вам нужно использовать оператор 'prepare' (также известный как динамический SQL). –
@GordonLinoff Я проверю это, спасибо! – feelthhis