create table jobs( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ..... salaryminus INTEGER UNSIGNED DEFAULT NULL, salaryplus INTEGER UNSIGNED DEFAULT NULL, ..... );
我想做这样的事情:
Select * from jobs order by maxof(salaryminus, salaryplus) limit 10;
maxof(Null,1000) 应该是1000
maxof(Null,1000)
如何实施maxof?
maxof
如果您知道该值salaryplus始终大于salaryminus,则可以执行
salaryplus
salaryminus
order by coalesce(salaryplus, salaryminus, 0)
coalesce 将返回不为null的第一个值;如果两个值均为null,则返回0(在此示例中)。
coalesce
否则,请执行以下操作:
order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))
这将同时治疗salaryminus和salaryplus为0,如果是空的,将被两个较大的订单。