簡體   English   中英

同一字段上的多個排序順序

[英]multiple sort order on same field

請考慮以下示例:

+---------+------------+
| value   | name       |
+---------+------------+
|      42 | abresas    |
|       0 | dionyziz   |
|       6 | dionyziz2  |
|       0 | izual      |
|       8 | kokos      |
|      37 | kostis90gr |
|       0 | test       |
|      35 | usertest   |
+---------+------------+

我想按值的升序排序,但我希望所有值為0的名稱顯示在底部。 因此排序順序應為:6,8,35,37,42,0,0,0

有沒有想過是否可以使用sql?

當然。 使用IF功能

ORDER BY IF(value=0,1,0), value

是的,您只需要調整order by子句:

order by (case when value = 0 then 999999 else value end)

是一種方法,假設有一個最大值。 另一種更通用的方法是:

order by (case when value = 0 then 1 else 0 end), value

您可以使用UNION關鍵字組合兩個不同查詢的結果,如下所示:

(select * from tableName where value>0 order by value) 
union 
(select * from tableName where value=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM