根据条件订购MYSQL结果

时间:2016-01-26 14:31:07

标签: mysql sql-order-by

我有一个提供此输出的查询:

ID |product | value | type
-----------------
65 | truck  | 4000  | kg
66 | truck  | 3000  | kg
67 | truck  | 7000  | mt
68 | truck  | 800   | mt
69 | crane  | 2000  | kg
70 | crane  | 3000  | kg
71 | crane  | 1000  | mt
72 | crane  | 500   | mt

我需要按产品按类型排序,然后需要根据相应的类型对​​数值进行排序。 所以数字必须是desc,如果'kg'和asc,如果'mt'。 我需要像上面那样订购上一张表:

ID |product | value | type
-----------------
65 | truck  | 4000  | kg
66 | truck  | 3000  | kg
67 | truck  | 800   | mt
68 | truck  | 7000  | mt
69 | crane  | 3000  | kg
70 | crane  | 2000  | kg
71 | crane  | 500   | mt
72 | crane  | 1000  | mt

我该如何解决这个问题? 提前谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将order by指定为:

order by product,
         (type = 'kg') desc,
         (case when type = 'kg' then value end) desc,
         value asc

第二个表达式首先放置所有kg行(对于每个产品)。第三个命令kg行下降。最终命令其余部分('mt')升序。

答案 1 :(得分:1)

您可以使用不同的订单

按产品订购,

型,

(当type ='mt'然后是值desc

的情况

else value asc end)