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取决于列的相应值:这是我的表格示例,其中有两列以字母和数字命名,这两列中的值是asc和desc命令。
现在我执行下面的命令,在这两列执行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