SQL多列sorting

我正在尝试按SQL中的多个列进行sorting,并按不同的方向进行sorting。 column1将按降序排列,而column2升序sorting。

我该怎么做?

 ORDER BY column1 DESC, column2 

这首先按column1 (降序),然后按column2 (升序,这是默认值)sorting,只要两行的column1字段相等。

其他答案缺乏一个具体的例子,所以在这里:

鉴于以下People表:

  FirstName | LastName | YearOfBirth ---------------------------------------- Thomas | Alva Edison | 1847 Benjamin | Franklin | 1706 Thomas | More | 1478 Thomas | Jefferson | 1826 

如果您执行以下查询:

 SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC 

结果集将如下所示:

  FirstName | LastName | YearOfBirth ---------------------------------------- Thomas | More | 1478 Thomas | Jefferson | 1826 Thomas | Alva Edison | 1847 Benjamin | Franklin | 1706 
 SELECT * FROM mytable ORDER BY column1 DESC, column2 ASC 

多列sorting取决于列的相应值:这是我的表格示例,其中有两列以字母和数字命名,这两列中的值是ascdesc命令。

在这里输入图像描述

现在我执行下面的命令,在这两列执行Order By

在这里输入图像描述

现在再次在这两列中插入新的值,其中ASC顺序的字母值:

在这里输入图像描述

示例表中的列看起来像这样。 现在再次执行相同的操作:

在这里输入图像描述

您可以看到第一列中的值按降序排列,但第二列不是ASC顺序。

您可以在多个条件下使用多个订单,

 ORDER BY (CASE WHEN @AlphabetBy = 2 THEN [Drug Name] END) ASC, CASE WHEN @TopBy = 1 THEN [Rx Count] WHEN @TopBy = 2 THEN [Cost] WHEN @TopBy = 3 THEN [Revenue] END DESC