MySQL问题篇2:关于IN字段不按照顺序返回问题

一、发现问题

数据库表结构如下:

其查询语句如下:

SELECT*
FROMdepartment
WHEREdepartment_id IN (5,4,2,3,1)

其返回结果如下: 

 

到此处我们发现了问题,其中我in写的是(5,4,2,3,1),其返回结果顺序为1,2,3,4,5,如果我们就是想按照我们in的顺序来返回数据的顺序,其显然的不对的。 

二、解决方案 

无论因为何种问题,导致我们无法按照有规则的字段进行排序返回结果,只能通过in中顺序来返回的结果,我们只能使用自定义排序

MySQL中ORDER BY的field()函数,可以用来对SQL中查询结果集进行指定顺序排序。

其一般语法为:field(字段,value,value,.......)

来看上面的解决方案:

SELECT*
FROMdepartment
WHEREdepartment_id IN (5, 4, 2, 3, 1)
ORDER BYFIELD(department_id, 5, 4, 2, 3, 1)

其结果集:
 

到这里基本的理论就完事了,但是实际开发中我们使用的是springboot,其使用的是mybatis与mybatisplus,而且也不可能正好的就是写死id的值,那我们怎么办呢? 

三、在 mybatis中的应用

其在mapper中可以有类似的处理,使用foreach进行循环,原理懂即可

 <select id="selectDepartmentsInOrder" resultType="com.example.Department">SELECT department_id, nameFROM departmentWHERE department_id IN<foreach item="id" collection="list" open="(" separator="," close=")">#{id}</foreach>ORDER BY FIELD(department_id,<foreach item="id" collection="list" separator=",">#{id}</foreach>)</select>

如果是在mybatisplus中就要复杂一点了 

 List<Integer> departmentIds = Arrays.asList(5, 4, 2, 1, 3);
//按照5,4,1,2,3String idStr = StrUtil.join(",", departmentIds );List<DepartmentDTO> departmentDTOS = departmentService.query().in("id",ids).last("order by field(id,"+idStr+")").list()

首先我们要干的事情是拼接list列表中的id,然后在mbp中没有关于field函数,所以我们只能用last来手动写查询语句,然后拼接 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1451582.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

vue+elementUI实现在表格中添加输入框并校验的功能

背景&#xff1a; vue2elmui 需求&#xff1a; 需要在一个table中添加若干个输入框&#xff0c;并且在提交时需要添加校验 思路&#xff1a; 当需要校验的时候可以考虑添加form表单来触发校验&#xff0c;因此需要在table外面套一层form表单&#xff0c;表单的属性就是ref…

单触控单输出触摸开关芯片PT2052A

1.产品概述 PT2052封装和丝印 PT2052A 是一款单通道触摸检测芯片。该芯片内建稳压电路&#xff0c;提供稳定电压给触摸感应电路使用&#xff0c;同时内部集成高效完善的触摸检测算法&#xff0c;使得芯片具有稳定的触摸检测效果。该芯片专为取代传统按键而设计&#xff0c;具有…

【LeetCode】4,寻找两个正序数组中的中位数

题目地址 B站那个官方解答视频实在看不懂&#xff0c;我就根据他那个代码和自己的理解写一篇文章 1. 基本思路 在只有一个有序数组的时候&#xff0c;中位数把数组分割成两个部分。中位数的定义&#xff1a;中位数&#xff0c;又称中点数&#xff0c;中值。中位数是按顺序排列…

【QT5】<总结> QT主要技术点

文章目录 前言 一、QT串口编程 二、QT网络编程 三、QT多线程 四、QT连接数据库 五、开发板上运行QT程序 前言 在学习QT的过程中&#xff0c;旨在更好地巩固所学到的知识&#xff0c;本篇总结QT在嵌入式开发中的主要技术点。 一、QT串口编程 思维导图&#xff1a; 知识点…

webrtc新版本无法连接peerconnection_server、无法音视频互通no incoming video...问题解决

问题1:无法连接peerconnection_server 在webrtc大概2022之后的版本,会出现无法连接peerconnection_server的现象,如下图: 在peerconnection_client界面点击Connect无法连接server. 解决办法 我们需要修改peerconnection_client的main.cc代码,如下图: 新添加的类代码…

Python第二语言(十一、Python面向对象(下))

目录 1. 封装 1.1 私有成员&#xff1a;__成员、__成员方法 2. 继承&#xff1a;单继承、多继承 2.1 继承的基础语法 2.2 复写 & 子类使用父类成员 3. 变量的类型注解&#xff1a;给变量标识变量类型 3.1 为什么需要类型注解 3.2 类型注解 3.3 类型注解的语法 3.…

LeetCode452用最少数量的箭引爆气球

题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处…

【C++进阶学习】第一弹——继承(上)——探索代码复用的乐趣

前言&#xff1a; 在前面&#xff0c;我们已经将C的初阶部分全部讲完了&#xff0c;包括类与对象、STL、栈和队列等众多内容&#xff0c;今天我们就进入C进阶部分的学习&#xff0c;今天先来学习第一弹——继承 目录 一、什么是继承&#xff1f;为什么会有继承&#xff1f; 二…

视频监控汇聚平台:系统日志介绍及在运维中的实际应用

目录 一、系统日志的重要性 &#xff08;一&#xff09;安全保障 &#xff08;二&#xff09;故障排查 &#xff08;三&#xff09;运营管理 &#xff08;四&#xff09;事件回溯与分析 二、产品说明 &#xff08;一&#xff09;产品介绍 &#xff08;二&#xff09;接…

前缀和算法:算法秘籍下的数据预言家

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. 前缀和算法的介绍 二、前缀和例题 2.1 【模版】前缀和 2.2 【模板】二维前缀和 2.3 寻找数组的中间下标 2.4 除自身以外数组的乘积 2.5 和为k的子数组 2.6 和可被k整除的子数组 2.7 …

Spring 内置BeanFactoryPostProcessor的子孙们

同样的Spring 也 内置了 一些实现 BeanFactoryPostProcessor的类&#xff0c;各有各的用处。 spring-context AspectJWeavingEnabler 用来把ClassPreProcessorAgentAdapter注册到LoadTimeWeaver中ConfigurationClassPostProcessor 一个重要的类&#xff0c;用来处理Configurat…

基础-02-数据通信基础

文章目录 1.信道特征1.1 数据通信概念1.2 信道特性-信道带宽W1.3 信道特性-码元和码元速率1.4 信道特性-奈奎斯特定理1.5 信道特性-香农定理1.6 带宽/码元速率/数据速率关系梳理1.7 练习题 2.信道延迟2.1 信道延迟概念2.2 信道延迟计算2.3 练习题 3. 传输介质3.1 传输介质概念3…

家用洗地机什么牌子好?怎么选择高性价比洗地机

洗地机已成为现代家居清洁的好帮手&#xff0c;承担着家庭卫生的重要角色&#xff0c;随着日常清洁需求的提升&#xff0c;一台高效、便捷的洗地机成为众多家庭的追求。市场上的洗地机品牌众多&#xff0c;每个品牌下又有诸多系列&#xff0c;让人在选购时难免感到迷茫。又如何…

服务器哪些因素会影响到网站SEO优化?

您是否曾想过&#xff0c;您的 SEO 性能下降&#xff0c;可能是网站服务器出了问题?鉴于此&#xff0c;在本文中&#xff0c;我们将探讨哪些服务器因素会影响您网站的 SEO&#xff0c;并提供可行的建议。 页面速度 搜索引擎非常看重您网站的加载速度。加载缓慢的网站会给用户体…

【云原生】创建harbor私有仓库及使用aliyun个人仓库

1.安装docker #删除已有dockersystemctl stop docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine #安装docker yum install -y docker-ce-20.10.1…

SolarWinds Serv-U 目录遍历漏洞复现(CVE-2024-28995)

SolarWinds Serv-U 目录遍历漏洞复现(CVE-2024-28995) 1.漏洞描述 SolarWinds 是一家提供广泛的 IT 管理和网络管理软件解决方案的公司。SolarWinds 的产品被设计用于监控和管理网络设备、服务器、应用程序和网络流量等。Serv-U 是 SolarWinds 提供的一款 FTP&#xff08;文件…

Java 开发实例:Spring Boot+AOP+注解+Redis防重复提交(防抖)

文章目录 1. 环境准备2. 引入依赖3. 配置Redis4. 创建防重复提交注解5. 实现AOP切面6. 创建示例Controller7. 测试8. 进一步优化8.1 自定义异常处理8.2 提升Redis的健壮性 9. 总结 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨…

12306 火车票价格解析 (PHP 解析)

1. 从接口拿数据 日期 出发站 终点站 都填上 xxx/otn/leftTicketPrice/queryAllPublicPrice?leftTicketDTO.train_date2024-06-15&leftTicketDTO.from_stationBJP&leftTicketDTO.to_stationSJP&purpose_codesADULT 返回的数据是这样的 {"validateMess…

3D工艺大师:航空航天手册的数字蜕变

在航空航天领域&#xff0c;技术手册是飞行器操作与维修工作的核心参考工具。常见的技术手册包括AMM&#xff08;航空器维护手册&#xff09;、CMM&#xff08;航空部件维修手册&#xff09;以及WDM&#xff08;飞机重量与平衡手册&#xff09;等&#xff0c;主要用于帮助机组工…