create table jobs(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
.....
salaryminus INTEGER UNSIGNED DEFAULT NULL,
salaryplus INTEGER UNSIGNED DEFAULT NULL,
.....
);
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
Select * from jobs order by maxof(salaryminus, salaryplus) limit 10;
Run Code Online (Sandbox Code Playgroud)
maxof(Null,1000)
应该是1000,
如何实施maxof
?
Ian*_*and 16
如果你知道salaryplus
永远大于salaryminus
,那么你就可以做到
order by coalesce(salaryplus, salaryminus, 0)
Run Code Online (Sandbox Code Playgroud)
coalesce
如果两个值都为null,则返回非空的第一个值,或者(在此示例中)为0.
否则,做这样的事情:
order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))
Run Code Online (Sandbox Code Playgroud)
如果它们为空,这将同时处理为0 salaryminus
和salaryplus
0,并且将按两者中的较大者排序.
归档时间: |
|
查看次数: |
2836 次 |
最近记录: |