怎么对MySQL查询结果进行排序

22次阅读
没有评论

共计 1489 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

怎么对 MySQL 查询结果进行排序,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

MySQL 查询结果如何排序

之前有一个功能修改,要求 MySQL 查询结果中:

idname***

1lucy…

3lucy…

2lily…

4lucy…

名字为 lucy 的优先排在前面,百思不得其解,可能有人会说简单 union 嘛或者弄个临时表什么的,其实我也想过,但是本身 SQL 逻辑就很多了(上面只是简例),再 union 的话或者临时表可能绕很大的弯路,后来看到一篇文章尝试着加入 orderbyfind_in_set(name, lucy), 结果得到的结果为 lucy 全部在下面,随即我改为 orderbyfind_in_set(name, lucy)desc 实现结果为

idname***

1lucy…

3lucy…

4lucy…

2lily…

基本实现,可是又有点不确定的心情,查 mysql 文档发现 find_in_set 语法

MySQL 查询结果如何排序

FIND_IN_SET(str,strlist)

如果字符串 str 在由 N 子链组成的字符串列数据表 strlist 中,则返回值的范围在 1 到 N 之间。一个字符串列数据表就是一个由一些被『,』符号分开的自链组成的字符串。如果第一个参数是一个常数字符串,而第二个是 typeSET 列,则 FIND_IN_SET()函数被优化,使用比特计算。如果 str 不在 strlist 或 strlist 为空字符串,则返回值为 0。如任意一个参数为 NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号 (『,』) 时将无法正常运行

mysql SELECTFIND_IN_SET(b , a,b,c,d – 2

看了这个我估计结果为什么要加 desc 了 find_in_set 返回的值是,当存在 lucy 的时候返回他的位置,没有的时候为 0,空的时候 null, 所以排序为 1,1,1,0, 如果加在列上就为

idnameFIND_IN_SET**

1lucy1…

3lucy1…

2lily0…

4lucy1…

表结构如下:

mysql select*fromtest;+—-+——-+|id|name|+—-+——-+|1|test1||2|test2||3|test3||4|test4||5|test5|+—-+——-+

执行以下 SQL:

mysql select*fromtestwhereidin(3,1,5);+—-+——-+|id|name|+—-+——-+|1|test1||3|test3||5|test5|+—-+——-+3rowsinset(0.00sec)

这个 select 在 mysql 中得结果会自动按照 id 升序排列,

但是我想执行 select*fromtestwhereidin(3,1,5); 的结果按照 in 中得条件排序, 即:3,1,5, 想得到的结果如下:

idname

3test3

1test1

5test5

方法如下:

select*fromtestwhereidin(3,1,5)orderbyfind_in_set(id, 3,1,5 select*fromtestwhereidin(3,1,5)orderbysubstring_index(3,1,2 ,id,1);

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1489字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)