SQL多列排序

我試圖按SQL中不一樣方向的多個列進行排序。 column1將按降序排序,而column2將按升序排序。 spa

我怎樣才能作到這一點? code


#1樓

ORDER BY column1 DESC, column2

每當兩行或更多行的column1字段相等時,這將首先按column1 (降序)對全部內容進行排序,而後按column2 (升序,這是默認設置)對全部內容進行排序。 排序


#2樓

SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC

#3樓

其餘答案缺乏一個具體的示例,所以請按如下步驟進行: 圖片

給定如下人員表: get

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

若是執行如下查詢: io

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

結果集將以下所示: table

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

#4樓

多列排序取決於兩列的相應值:這是個人表格示例,其中兩列以字母和數字命名,這兩列中的值分別爲ascdesc順序。 ast

在此處輸入圖片說明

如今,我經過執行如下命令在這兩列中執行「 訂購依據」: bug

在此處輸入圖片說明

如今再次在這兩列中插入新值,其中字母值按ASC順序排列: im

在此處輸入圖片說明

而且「示例」表中的列以下所示。 如今再次執行相同的操做:

在此處輸入圖片說明

您能夠看到第一列中的值按desc順序排列,而第二列中的值按ASC順序排列。


#5樓

您能夠在多種條件下使用多種順序,

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
相關文章
相關標籤/搜索