我有一个与下表相似的表
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查询本身的数据。
答案 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
很有意义。