SQL: как выбрать одно из двух полей, в зависимости от третьего поля - PullRequest
5 голосов
/ 27 октября 2011

Мне нужно экспортировать данные из существующей таблицы. До недавнего времени я пользовался -

SELECT item_ID, item_Info, ...moreFields... FROM tableName WHERE myCondition=0

Теперь они изменили структуру TABLE и добавили новое поле "item_Info2"

Когда они заполняют ТАБЛИЦУ:

  • если "item_Type" равен 1 или 2 или 3 или 4, то значение "item_Info" имеет значение
  • если "item_Type" равен 5, то "item_Info" пусто, и мне нужно "item_Info2" в качестве результата моего запроса вместо "item_Info"

Что такое соответствующая команда SELECT?

[похожий вопрос: mysql выбрать любое одно поле из двух относительно значения третьего поля

, но из этого примера я не вижу синтаксис для выбора moreFields]

Спасибо

Атар.

Ответы [ 2 ]

11 голосов
/ 27 октября 2011

Вы можете рассматривать оператор CASE как любое другое имя столбца, отделять его от других столбцов запятой и т. Д. То, что происходит в CASE, следует рассматривать как имя одного столбца, в вашем случае вам нужны запятыедо и после него.

SELECT item_ID, CASE WHEN item_Type = 5 THEN item_info ELSE item_info2 END, field_name, another_field_name ...moreFields... FROM tableName WHERE myCondition=0

Вы также можете использовать псевдоним, чтобы было легче получить результат из запроса:

SELECT item_ID, CASE WHEN item_Type = 5 THEN item_info ELSE item_info2 END AS 'item_info', field_name, another_field_name ...moreFields... FROM tableName WHERE myCondition=0
3 голосов
/ 27 октября 2011

Чтобы отредактировать ответ на другой вопрос:

SELECT 
  item_id, item_otherproperty,
  CASE WHEN item_Type= 5
   THEN item_Info2
   ELSE item_Info
  END AS `info` FROM table ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...