解决MySQL需要根据特定顺序排序

文章目录

  • [0 写在前面](#0 写在前面)
  • [1 问题引入](#1 问题引入)
  • [2 问题解决](#2 问题解决)
  • [3 写在末尾](#3 写在末尾)

0 写在前面

在进行业务需求的时候,不会根据排序去选择数据。例如,在导出的时候数据排序是根据编辑时间去排序的,那么他的主键id会打乱。

假如: 要导出id为 3 ,1 , 2 ,6 , 5 的数据并且根据此顺序导出。

1 问题引入

如果直接在MySQL中写

sql 复制代码
SELECT 数据
FROM 表名
WHERE 表名id IN (3, 1, 2, 6, 5)

会发生MYSQL默认排序规则;

2 问题解决

使用mysql的FIELD()函数进行自定义排序

使用id为例:

sql 复制代码
SELECT 数据
FROM 表名
WHERE 表名.id IN (所有id)
order by FIELD(id, 排序规则);

注意:排序规则需要一一对应,即使在 in()的数据不影响,只要在field()确认规则即可

3 写在末尾

因为从业务里传过来的数据肯定是规则排序,所以建议用IN() 和 FIELD()里的排序 对应起来是最保险的。

相关推荐
myy-learn3 小时前
32 SQLITE数据库
jvm·数据库·sqlite
JavaPub-rodert3 小时前
Redis 和 MySQL 如何保证数据一致性?从业务方案到底层原理完整讲解
数据库·redis·mysql
大牧师3 小时前
TypeORM 学习教程
数据库·sql·学习·node.js·orm·nest.js·typeorm
IvorySQL3 小时前
PostgreSQL 日报| PGQ 功能发现严重缺陷(9 月 4 日)
数据库·postgresql
后台模板学习3 小时前
用 IM 即时聊天项目一次讲清消息去重算法的踩坑与解决方案
java·数据库·spring
imbackneverdie3 小时前
国内有哪些比较全面的生物医学相关数据库?
大数据·数据库·人工智能·ai·信息可视化·aigc·科研
数字智核4 小时前
2026昆山工厂空压机突然停机怎么办?找谁抢修
服务器·网络·数据库
AAA代码批发商4 小时前
Days 39 Linux C 开发之 SQLite 数据库完整学习笔记
linux·c语言·数据库
笑梦无境4 小时前
mysql的安装及配置(3)
数据库·mysql·adb
电商API_180079052474 小时前
跨境1688代采商家,如何借助API打通供应链,实现效率跃迁
大数据·数据库·网络爬虫