как выбрать столбец таблицы по условию - PullRequest
0 голосов
/ 07 июля 2011

Можно ли выбрать столбец таблицы для условия ?, в этом запросе:

SELECT x,y FROM Z

Я хочу сделать выбор столбца y Y условным, как:

SELECT x ( ONLY WHERE x_type = '20' ), y FROM Z # just example of what i am trying to do :)

y_type - это еще один столбец, его значение - это то, от чего зависит выбор Y или нет!, Есть ли что-то, чтобы сделать это, или я просто попал не в ту дверь?

Ответы [ 5 ]

2 голосов
/ 07 июля 2011

Нет, это невозможно.Вы можете установить для столбца значение NULL, если условие не выполняется:

SELECT    IF (x_type = 20, x, NULL) AS x
          y
FROM      Z
1 голос
/ 07 июля 2011
SELECT CASE WHEN y_type = 20 THEN y ELSE NULL END As y -- replace y_type with column to check
,.... -- other column list
FROM yourtable

Вы также можете использовать CASE с IN для нескольких значений, например.

SELECT CASE WHEN y_type IN (10,20) THEN y ELSE NULL END As y -- replace y_type with column to check
,.... -- other column list
FROM yourtable
1 голос
/ 07 июля 2011

Если вы хотите выбрать x_type, тогда ваш SQL-запрос должен быть

SELECT x, y FROM Z where x_type = '20'

Если вы хотите ограничить тип y_type, вы можете добавить OR y_type = 'nn' в конец. Я думаю, что ваш вопрос в том, нужен ли вам один и тот же столбец как в предложении select, так и в предложении where. Ответ: «Нет, ты не обязан».

1 голос
/ 07 июля 2011

Не уверен насчет деталей:

SELECT x
     , CASE WHEN x_type = '20' THEN y
                               ELSE NULL
       END AS y
FROM Z

или, может быть, вы хотите простое:

SELECT x
     , y
FROM Z
WHERE x_type = '20'
1 голос
/ 07 июля 2011
select case when x_type = '20' then
x else '' end,y from z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...