`
ytfei
  • 浏览: 89694 次
社区版块
存档分类
最新评论

mysql order by in 的字符顺序

阅读更多

有两种方式:

1. select id from a where id in (11,1,111) order by instr(',11,1,111,',concat(',',id,',')) 注意要构造多出的, 号

2.(推荐)SELECT * FROM `MyTable`WHERE `id` IN (11,1,111) ORDER BY FIELD(`id`, 11,1,111)

 

有文章指出:

FIELD(str,str1,str2,str3,...)
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.

排序过程:把选出的记录的 id 在 FIELD 列表中进行查找,并返回位置,以位置作为排序依据。

这样的用法,会导致 Using filesort,是效率很低的排序方式。除非数据变化频率很低,或者有长时间的缓存,否则不建议用这样的方式排序。

 

作者建议在程序代码中自行排序,不过我实测过程当中没有发现性能瓶颈。

分享到:
评论

相关推荐

    详谈mysql order by in 的字符顺序(推荐)

    本文将深入探讨如何使用`ORDER BY` 和 `IN` 来实现特定的字符顺序。 首先,我们来看一个简单的`ORDER BY`用法。通常,`ORDER BY`后面跟着一个或多个列名,可以指定升序(ASC)或降序(DESC)排列。例如: ```sql ...

    PHP MySQL Order By:Update:Delete.md

    通过使用`ORDER BY`,我们可以控制查询结果的返回顺序,这对于数据分析和展示都非常有用。 ##### 1. 基本语法 `ORDER BY`的基本语法如下: ```sql SELECT column1, column2, ... FROM table_name ORDER BY column...

    Order By靶场(PHP+Mysql)

    "Order By靶场(PHP+Mysql)"是一个专门用于学习和练习SQL注入技术的环境,其中涉及到的主要知识点包括PHP编程、MySQL数据库管理和SQL查询语言。在这个靶场中,用户可以尝试利用SQL注入漏洞来操纵数据库查询结果,...

    MySQL中Order By多字段排序规则代码示例

    总结来说,MySQL的`ORDER BY`语句在处理多字段排序时,会按照字段列表中的顺序逐个进行排序。每个字段的排序方式可以是升序或降序,这取决于`ASC`(升序)或`DESC`(降序)关键字。在理解这些规则的基础上,我们可以...

    mysql高级视频教程百度云(2019).txt

    48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级...

    MySQL基本语句和连接字符串-JAVA程序员JAVA工程师面试必看.doc

    增大它有助于加快ORDER BY或GROUP BY操作的速度。 以上参数的调整需根据实际工作负载和服务器资源来进行,以确保最佳性能与稳定性。在调整这些参数时,务必了解其对系统整体性能的影响,并进行适当的测试。

    MySQL查询in操作 查询结果按in集合顺序显示

    然而,如果你希望查询结果按照`IN`列表中的顺序排列,可以使用`ORDER BY`与`FIND_IN_SET`或`FIELD`函数结合来实现。 1. 使用`FIND_IN_SET`函数: `FIND_IN_SET`函数可以在一个逗号分隔的字符串中查找指定的元素的...

    Mysql通过存储过程分割字符串为数组

    1. **REVERSE(str)**: 这个函数的作用是返回输入字符串`str`的字符顺序反转的结果。在处理分割字符串的问题中,它被用来帮助获取子串的位置。 2. **SUBSTRING_INDEX(str, delim, count)**: 此函数根据分隔符`delim`...

    MySQL关于字符串中数字排序的问题分析

    在MySQL中,处理字符串中的数字排序可能会遇到一些特殊的情况,因为MySQL默认会按照字符串的字典顺序进行排序,而不是按照数字的大小。当字段的定义是字符串类型(如VARCHAR),但实际存储的是数字时,如果不做特殊...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_为排序使用索引OrderBy优化 · 49.尚硅谷_MySQL高级_慢查询日志 · 50.尚硅谷_MySQL高级_批量插入数据脚本 · 51.尚硅谷_MySQL高级_用Show Profile进行sql分析 · 52.尚硅谷_MySQL高级_全局...

    MySQL对中文进行排序详解及实例

    这通常不会按照汉字的拼音或笔画顺序进行排序,因为MySQL会把每个中文字符视为一个单独的单位,而不是考虑它们的内在结构或拼音。这就是为什么我们需要采取额外的步骤来确保正确的排序。 为了对中文字段进行拼音...

    解决Hibernate中MySQL的中文排序

    本文将深入探讨如何解决这些问题,确保MySQL数据库中的中文数据能按照正确的顺序进行排序。 首先,我们需要了解MySQL字符集的基础知识。MySQL支持多种字符集,如GBK、UTF-8等,它们用于存储和表示不同语言的字符。...

    mysql通过find_in_set()函数实现where in()顺序排序

    `FIND_IN_SET()`函数是MySQL提供的一种特殊功能,它在字符串列表中搜索指定的元素并返回其位置(1为基础)。 `FIND_IN_SET(str, strlist)`函数接收两个参数: 1. `str`: 要查找的字符串。 2. `strlist`: 一个逗号...

    MYSQL教程02 MYSQL教程02 MYSQL教程02

    查询语句是数据库操作的核心,SELECT语句用于从表中检索数据,可以结合WHERE子句进行条件筛选,GROUP BY和HAVING子句用于数据分组和过滤,ORDER BY用于排序,LIMIT用于限制返回结果的数量。此外,JOIN操作用于连接多...

    MySQL 5.1官方简体中文参考手册

    7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它...

    MySQL 5.1参考手册

    7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它...

    MySQL 5.1参考手册 (中文版)

    7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它...

    MySQL 5.1参考手册中文版

    7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. ...

    MySQL5.1参考手册官方简体中文版

    7.2.12. MySQL如何优化ORDER BY 7.2.13. MySQL如何优化GROUP BY 7.2.14. MySQL如何优化LIMIT 7.2.15. 如何避免表扫描 7.2.16. INSERT语句的速度 7.2.17. UPDATE语句的速度 7.2.18. DELETE语句的速度 7.2.19. 其它...

Global site tag (gtag.js) - Google Analytics