我试图找到解决方案,我可能做错了研究,这就是我需要你帮助的原因:(
有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 |
在
|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 |
我希望你能理解我的意思!
感谢您的帮助!
答案 0 :(得分:5)
试试这个:
ORDER BY CASE
WHEN category IN (1, 2, 3) THEN 1
WHEN category IN (4, 5, 6) THEN 2
ELSE 3
END,
name
该查询使用CASE
表达式将category
子集组合在一起:子集1
,2
,3
的值为{{ 1}}因此具有最高优先级。子集1
,4
,5
的值分配为6
,而其他类别的优先级最低,即2
的值。
答案 1 :(得分:2)
如果您使用的是MySQL或PostgreSQL,可以使用ORDER BY category>3, name
轻松获得此信息,假设只有这两个可能的组。
答案 2 :(得分:1)
在SELECT
语句中尝试:
... ORDER BY IF(Category<4,0,1) ASC, name ASC