根据条件对 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)
我有一个查询给出了这个输出:
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)