如何通过两个单独的列来订购一组数据?
两列中的一列并不总是0,我需要按任意列的最大值排序。
目前从
获取这组数据order by Value1 desc, Value2 desc;
Name | Value1 | Value 2
----------------------------------------
A | 17 | 0
B | 11 | 0
C | 0 | 57
D | 0 | 15
但我希望它是这样的:
Name | Value1 | Value 2
----------------------------------------
C | 0 | 57
A | 17 | 0
D | 0 | 15
B | 11 | 0
答案 0 :(得分:1)
不知道你正在使用什么RDMBS,但如果它是postgres,那么GREATEST
func可以在这里提供帮助:
SELECT * FROM FOO ORDER BY GREATEST(Value1, Value2) desc;
听起来,GREATEST
func将从每行的2列返回更高的值。
(其他RDBMS也可能支持GREATEST
你必须检查你正在使用的内容)
答案 1 :(得分:0)
这是关于MySQL:
select * from tablename order by
case when value1<value2 then value2 else value1 end desc;
使用asc或desc进行订单更改