按两列

时间:2018-01-28 20:10:49

标签: sql

如何通过两个单独的列来订购一组数据?

两列中的一列并不总是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

2 个答案:

答案 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进行订单更改