根据条件对 MYSQL 结果进行排序

Ordering MYSQL result basing on a condition

我有一个查询给出了这个输出:

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

我需要它按产品、按类型排序,然后数值需要根据它们对应的类型排序。 因此,如果 'kg',则数字必须为 desc,如果 'mt',则必须为 asc。 我需要之前的table这样排序:

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

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

您可以将 order by 指定为:

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

第二个表达式将所有 kg 行放在最前面(对于每个产品)。第三个将 kg 行降序排列。最后的命令其余的('mt')升序。

您可以使用不同的顺序

按产品排序,

类型,

(当类型 = 'mt' 然后值 desc

的情况

else value asc end)