2012-08-29 29 views
0

我有一个条件查询这样:多个订单通过关系,一级的情况下

  • 如果一列(顺序)不为0,以便通过值1到99999(最大值)
  • 我需要按姓氏排序全部为0。

所以,如果我有一个表,这样

ID Order  Last Name 
1  0  Manner 
2  1  Brock 
3  0  Lester 
4  0  Annual 
5  0  Greatly 

结果我预计是:

Brock 
Annual 
Greatly 
Lester 
Manner 

这里是我的查询。这是怎么回事,每次的是,我得到姓氏排序,没有非0阶走在前面:

select c.last_name 
from person_reports crt 
join person c 
where c.org_id = 1000 and crt.reports_to_id = 100389 and c.id = crt.contact_id 
order by c.last_name, case preference_num when 0 then 9999999 else preference_num end 

我目前的工作的结果:

Annual 
Brock 
Greatly 
Lester 
Manner 

感谢所有帮助

回答

3

你可以简单地逆转ORDER BY子句:

order by case preference_num when 0 then 9999999 else preference_num end, c.last_name 

而且你能避免使用魔法“999 9999'如果你在开头添加一个段:

order by case preference_num when 0 then 1 else 0 end, preference_num, c.last_name 
+0

漂亮!非常感谢。 – user82302124

相关问题