Mysql数据查询in的时候如何排序

Mysql数据查询in的时候如何排序,第1张

前几天工作上遇到一个问题,在mysql数据查询的时候,使用的是in条件,而结果需要根据in来进行排序,当时尝试了几次都没成功,后来在度娘的帮助下,找到了解决办法: select * from table_name where id in (6,2,1,10,5,7..) 查询的结果和in中的顺序并不一致,也就是说在批量查询时,mysql的查询并不是按照in中的值得顺序来查询的。那怎么才能保证和in查询中的顺序相同呢? 查询了资料发现有两种方式可以对in查询的结果进行排序。一种是order by find_in_set,另外一种是order by substring_index 1、select * from table_name where id in (6,2,1,10,5,7..) order by find_in_set(id,'6,2,1,10,5,7') 2、select * from table_name where id in (6,2,1,10,5,7..) order by substring_index('6,2,1,10,5,7',id,1)

如有以下sql:

T1.limit_user 为account表中查询出来的值

‘9,8,4’

查询sql正确查询结果应为:

不可推荐 ,推销客户,推销客户

实际结果为:

不可推荐

原因:

在mysql中in里面如果是字符串的话,会自动转化成int类型的,内部使用了如下方法: CAST('4,3' AS INT)

导致’4,3‘ 变成了4,所以上述查询sql结果只有第一个。

解决方案

FIND_IN_SET('查询的值(如:1)', '使用逗号隔开的字符串集合,如:('1,2,3')')

正确的sql


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/6146692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存