Вы можете использовать выражение 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
имеет большой смысл.