首页 文章

SQL多列排序

提问于
浏览
524

我试图在SQL中按多个列排序,并在不同的方向 . column1 将按降序排序, column2 升序 .

我怎样才能做到这一点?

5 回答

  • 4

    您可以在多个条件下使用多个排序,

    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
    
  • 299
    SELECT  *
    FROM    mytable
    ORDER BY
            column1 DESC, column2 ASC
    
  • 125

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

    给出以下 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
    
  • 836

    多列排序取决于列的相应值:这是我的表示例,其中有两列用Alphabets和Numbers命名,这两列中的值是asc和desc命令 .

    enter image description here

    现在我通过执行以下命令在这两列中执行 Order By

    enter image description here

    现在我再次在这两列中插入新值,其中Alphabet值按ASC顺序排列:

    enter image description here

    并且Example表中的列看起来像这样 . 现在再次执行相同的操作:

    enter image description here

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

  • 13
    ORDER BY column1 DESC, column2
    

    只要两个或多个行的 column1 字段相等,这首先按 column1 (降序)排序,然后按 column2 (升序,这是默认值)排序 .

相关问题