mysql in 禁止排序 按照in内容排序


mysql in 禁止排序 按照in内容排序

在MySQL中,使用IN条件查询时,默认情况下MySQL会按照主键来排序,这样做的原因是为了提高查询效率。当然,这种方式也会导致一些不必要的资源浪费。在这种情况下,我们可以手动干预MySQL的默认排序规则,来达到我们想要的查询结果。接下来,我们将详细介绍在MySQL中使用IN条件查询而不进行排序

默认排序

SELECT id ,title, mobile, date  
FROM table 
WHERE mobile IN (value1, value2, value3) 

按照mobile in 中的值排序了,默认asc

使用field

使用IN条件查询时,默认情况下MySQL会进行排序。但是,我们可以利用MySQL的多条件查询特性,在IN条件中加入一个与查询无关的排序条件来打乱MySQL的默认排序,从而达到我们的查询效果。以下是一段示例代码:

SELECT id ,title, mobile, date  
FROM table 
WHERE mobile IN (value1, value2, value3) 
ORDER BY field(mobile, value1, value2, value3);

我们在IN条件查询语句中加入了一个ORDER BY语句,并且使用了MySQL的field函数,将IN条件中的值与排序值进行了一一对应。这样,MySQL的查询结果就会按照IN条件中的值的顺序进行排序,达到我们的查询需求。

使用FIND_IN_SET

逻辑和效果同field是一样的

SELECT id ,title, mobile, date 
FROM table 
WHERE id in (7,1,5,9,3)
ORDER BY FIND_IN_SET(id,'7,1,5,9,3')

使用UNION ALL


SELECT  id ,title, mobile, date  FROM table WHERE mobile = value1
UNION ALL
SELECT  id ,title, mobile, date  FROM table WHERE mobile = value2
UNION ALL
SELECT  id ,title, mobile, date  FROM table WHERE mobile = value3;

查询了三次,最终使用UNION ALL将所有结果合并,从而达到了IN条件查询的效果。这种方式虽然相对复杂一些,但是如果你在项目中使用的主键比较复杂或者无法用field函数轻松排序时,这种方式也是一个很好的选择。

总结

MySQL中使用IN条件查询时,如果不需要排序,我们可以手动干预MySQL的默认排序规则来达到我们的查询效果。无论你是使用ORDER BY语句配合field/FIND_IN_SET函数,还是使用UNION ALL来实现,都可以让你摆脱MySQL默认的排序规则,找到自己想要的数据。

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南巷Dong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值