mysql 查询语句 按自定义顺序排序
时间: 2023-11-02 15:06:28 浏览: 119
如果需要按照自定义顺序排序,可以使用 MySQL 的 FIELD 函数。FIELD 函数可以返回一个字符串在一个列表中的位置,然后我们可以根据这个位置进行排序。
假设我们有一个表叫做 `users`,其中有一个字段叫做 `name`,我们想要按照自定义顺序排序,比如先是 "Tom",然后是 "Jerry",最后是其他名字,可以使用以下的 SQL 语句:
```
SELECT * FROM users ORDER BY FIELD(name, 'Tom', 'Jerry') DESC, name ASC;
```
其中, `FIELD(name, 'Tom', 'Jerry')` 返回一个值列表,表示 name 字段在 'Tom', 'Jerry' 中的位置。DESC 表示按照位置从大到小排序,而 name ASC 表示按照名字字母顺序排序。
这样就可以按照自定义顺序排序了。
相关问题
mysql group by自定义顺序
根据提供的引用内容,MySQL的GROUP BY语句不能自定义顺序。GROUP BY语句用于将行分组,并根据分组后的结果进行聚合操作。GROUP BY语句的结果是根据分组键的唯一值来创建的。这意味着无法按照自定义顺序对分组结果进行排序。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Mysql学习笔记(杂谈):where,group,having的执行顺序;group by后组内排序;group by后选择某条数据...](https://blog.csdn.net/sinat_38393872/article/details/107998976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
mysql的order by指定自定义顺序
在MySQL中,如果需要使用`ORDER BY`语句来按照自定义顺序排序结果集,可以通过两种主要方式实现:
1. CASE表达式:可以使用`CASE`表达式来定义一个排序规则,然后根据这个规则进行排序。例如,如果你有一个`status`字段,你想要将状态`'active'`排在最前面,然后是`'pending'`,最后是`'inactive'`,你可以写一个`CASE`表达式来为每种状态分配一个权重,然后根据这个权重排序。
```sql
SELECT * FROM your_table
ORDER BY
CASE status
WHEN 'active' THEN 1
WHEN 'pending' THEN 2
WHEN 'inactive' THEN 3
ELSE 4
END ASC;
```
2. 使用 FIND_IN_SET() 函数:如果自定义顺序是基于一系列用逗号分隔的值,可以使用`FIND_IN_SET()`函数。首先,你需要创建一个包含排序顺序的字符串,然后使用`FIND_IN_SET()`函数来找到每个值在字符串中的位置。
```sql
SET @status_list := 'active,pending,inactive';
SELECT * FROM your_table
ORDER BY FIND_IN_SET(status, @status_list);
```
这两种方法都可以帮助你按照自定义顺序对查询结果进行排序。
阅读全文