2012-08-29 34 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

相關問題