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和salaryplus0,并且将按两者中的较大者排序.