Выберите из другого столбца, если выбрано значение «0» в mySQL - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть таблица, подобная таблице ниже

id | mainID | subID
1  |   11    |   0
2  |   12    |   0 
3  |   13    |   20
4  |   13    |   21
5  |   15    |   0

Мне нужно выбрать все "mainID", если subID равен 0. Если subID не равен 0, тогда выберите subID вместо mainIdD

Результирующая таблица

id | resultId
1  | 11
2  | 12
3  | 20
4  | 21
5  | 15

Значение столбца subID не является нулевым, поэтому я не могу использовать здесь ifnull. Можно ли это сделать, просто используя sql запрос? И не использовать функцию записи для него в php. Я знаю, что это можно сделать в php, но мне нужны эти данные из самого запроса sql.

1 Ответ

2 голосов
/ 10 апреля 2020

Вы можете использовать выражение case:

select id, (case when subid = 0 then mainid else subid end) as resultid
from t;

. Для ваших данных выборки, greatest() также будет работать:

select id, greatest(subid, mainid) as resultid

Или, если вы сохранили "0 "значение как NULL вместо 0, тогда coalesce() будет лучшим:

select coalesce(subid, mainid) as resultid

Если" 0 "означает отсутствие соответствующего значения, тогда NULL имеет большой смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...