代码之家  ›  专栏  ›  技术社区  ›  Kiel

在SQL Server中首先按特定值排序

  •  2
  • Kiel  · 技术社区  · 6 年前

    我一辈子都想不出这个,请帮帮我。我正在使用SQL Server,需要有关ORDER BY子句的帮助。

    我想要这个。。

    ID     Name
    --------------
    1      Orange
    2      Yellow
    3      Green
    4      Purple
    5      Red
    

    像这样点餐

    ID     Name
    --------------
    4      Purple   <-- This one first then ASC afterwards
    3      Green
    1      Orange
    5      Red
    2      Yellow        
    

    有点像

    ORDER BY ID=4, Name ASC
    

    我以前在MySQL中使用字段,但在SQL Server中不能使用该字段。

    请帮忙。

    2 回复  |  直到 6 年前
        1
  •  10
  •   John Woo    6 年前

    您可以使用 CASE ORDER BY 条款

    ORDER BY CASE WHEN ID = 4 THEN 0 ELSE 1 END ASC, 
             NAME ASC
    
        2
  •  0
  •   Derrick Moeller    6 年前

    一种选择是使用 UNION .

    SELECT * FROM YourTable WHERE ID = 4
    UNION
    SELECT * FROM YourTable WHERE ID <> 4 ORDER BY Name ASC