如何使用SQL同时按两个相同的列排序?

时间:2014-03-12 16:36:33

标签: sql

例如,我有下表:

name       code1      code2
----------------------------
John         5          3
Kevin        6          4
Mary         3          9

我想按代码1和代码2进行排序,无论哪个更大,所以希望的结果将是

name       code1      code2
----------------------------
Mary         3          9
Kevin        6          4
John         5          3

玛丽是第一,因为它有最大的代码(9),凯文是第二,因为它有第二大代码(6)等等......

由于

3 个答案:

答案 0 :(得分:3)

您可以使用CASE,它适用于大多数rdbms,如Oracle,MS-SQL Server或MySql:

SELECT name, code1, code2
FROM TableName
ORDER BY CASE WHEN code1 > code2 THEN code1 ELSE code2 END DESC

Demo

答案 1 :(得分:2)

对于mysql / postgresql / oracle,有GREATEST函数。

SELECT * FROM your_table
ORDER BY GREATEST(code1, code2) DESC

答案 2 :(得分:0)

您可以在case子句中使用order by语句(以及其他内容)。这可以很好地滥用:

order by 
 case 
  when code1 > code2 then code1 
  else code2 
 end