码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mysql in 禁止排序 按照in内容排序


    文章目录

    • 默认排序
    • 使用field
    • 使用FIND_IN_SET
    • 使用UNION ALL
    • 总结
    • 外传

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

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

    默认排序

    SELECT id ,title, mobile, date  
    FROM table 
    WHERE mobile IN (value1, value2, value3) 
    
    • 1
    • 2
    • 3

    按照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);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们在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')
    
    • 1
    • 2
    • 3
    • 4

    使用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;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

    总结

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

    外传

    😜 原创不易,如若本文能够帮助到您的同学
    🎉 支持我:关注我+点赞👍+收藏⭐️
    📝 留言:探讨问题,看到立马回复
    💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    第一个 Angular 项目 - 添加服务
    【源码课件+教程】Python入门教程_Python400集持续更新
    开放式耳机百元价位怎么选、公认最好的百元开放式耳机
    Codeforces Round #832 (Div. 2)C,D ICPC澳门 D(模拟) F(构造) G(博弈)
    linux查看外网ip的5种方法
    找不到实时聊天软件?给你推荐电商企业都在用的!
    卷积神经网络 语义分割,图像分割神经网络算法
    2024年csdn最新最全pytest系列——pytest-rerunfailures插件之测试用例失败重跑
    Kotlin 进阶函数式编程技巧
    C-数据结构-树状存储的基本实现
  • 原文地址:https://blog.csdn.net/fclwd/article/details/132588005
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号