如果在MySQL中选择的值为'0',则从另一列中选择

时间:2020-04-10 11:45:37

标签: mysql sql

我有一个与下表相似的表

index.html

如果subID为0,我需要选择所有的“ mainID”。如果subID不为0,则选择subID代替mainIdD

结果表

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

subID列的值不为null,因此在这里不能使用ifnull。可以仅使用sql查询来完成此操作吗?并且不要在php中使用write函数。我知道可以在php中完成,但我需要来自sql查询本身的数据。

1 个答案:

答案 0 :(得分:2)

您可以使用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很有意义。