SQL按特定值组排序

Nol*_*pez 0 sql sorting sql-order-by

我试图找到解决方案,我可能做错了研究,这就是为什么我需要你的帮助:(

有6种不同的类别,具有不同的值.我想选择所有这些,但是在2个不同的组中排序:第一个包含1到3之间的所有组,按另一个值排序.始终在同一个请求中,我想显示4到6之间的类别,按另一个值排序.

更好的方法是告诉你之前和之后,我想要的是:

之前

|Category | name     |
|    1    | Barney   |
|    6    | Ted      |
|    6    | Anita    |
|    3    | Jessica  |
|    2    | Marshall |
|    3    | Lily     |
|    4    | Robin    |
|    2    | Bryan    |
|    5    | Oliver   |
Run Code Online (Sandbox Code Playgroud)

|Category | name     | ----- Alphabetic sort
|    1    | Barney   |
|    2    | Bryan    |
|    3    | Jessica  |
|    3    | Lily     |
|    2    | Marshall |
---------------------------Imaginary line which seperate 2 groups : category 1 2 3 and 4 5 6
|    6    | Anita    |
|    5    | Oliver   |
|    4    | Robin    |
|    6    | Ted      |
Run Code Online (Sandbox Code Playgroud)

我希望你明白我的意思!

谢谢您的帮助 !

Gio*_*sos 5

试试这个:

ORDER BY CASE  
            WHEN category IN (1, 2, 3) THEN 1
            WHEN category IN (4, 5, 6) THEN 2
            ELSE 3
         END,
         name
Run Code Online (Sandbox Code Playgroud)

该查询使用CASE表达式以组一起category子集:子集1,2,3被分配的值1,并因此具有最大优先级.子集 4,5,6被赋予的价值2,而类别其余获得最低的优先级,即值3.