当前位置: 首页 > news >正文

【MySQL场景题:如何保障传入id顺序与查询结果id顺序一致】---项目积累

内容:记录自己学习。

文章目录

  • 前言
  • 一、【点赞排序显示】场景问题叙述
  • 二、原因分析
  • 总结


前言

今天在看一个开源项目的代码,他有一个【博客点赞排序显示的场景问题】,他牵涉到MySQL在查询的时候,自定义排序的问题,我想去记录分享一下。大家也可以看一下,感觉挺有意思的。


下面我会把具体的场景、问题,抽取出来。项目比较大,不能全部展示。


一、【点赞排序显示】场景问题叙述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 我们给一个【文章】点赞,它会显示你的头像,同时它会向后端,发送这篇文章的ID、当前用户的ID、当前的时间戳。(这个头像可以记住,我们这里称为A用户)
在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 然后我们再去登录另外一个用户B,也去点击。点赞完成之后他有一个排序的效果,但是这里就有问题,A用户第一个点赞的,他的头像应该是第一个,B用户头像应该是第二个。我们想要正确的结果应该是:A、B这样去排序,但是现在是B、A。
在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 这里我们看一下,从后端返回的数据。后端返回的数据就是B、A的顺序,有问题!!!
在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 我们继续看!!
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 我们看一下我们的Redis,id为5号在前,1号在后,没有问题!!!在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 再去看一下我们执行SQL日志:根据id查询用户表,先传的id为5的,也就是A用户,再去查id为1的,然后查询到2条数据,然后脱敏返回给前端渲染。
在这里插入图片描述

⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 传值传的没有问题,是先5再1,为什么查出来顺序不对呢???



二、原因分析



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 这里直接说原因,那就是SQL语句的问题!!!这里我们用的是:where id in()
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 我们把这个SQL语句再去执行一下!!!如下:
在这里插入图片描述


⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 当我们查询用in的时候,他不会用我们里面指定的id顺序去排序返回数据的!!! 这个时候就延伸出来一个问题,那就是在in的时候,如何保障查询的顺序,是我们传递顺序呢???
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 这里可以使用:ORDER BY FIELD(字段,具体顺序),这个FIELD含义就是字段,根据指定的字段,去排序。通俗来说:你想对那个字段排序,具体的顺序就是你传的顺序。如下图:
在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ OK,这个时候,去修改一下,原有的SQL语句。
在这里插入图片描述



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 重启服务器,刷新,OK,完美!!!

在这里插入图片描述



OK,到这里就讲完了!!!



⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 上面是结合特定的场景去解决这个问题的,来去具体说这个SQL的用法,当然还存在其他的解决方案。



总结

⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 文章结合自己看别人的开源项目,总结的,如有不正确的地方,多多指教。


http://www.mrgr.cn/news/69337.html

相关文章:

  • Python爬虫项目 | 一、网易云音乐热歌榜歌曲
  • UEFI学习(五)——启动框架
  • LabVIEW开发相机与显微镜自动对焦功能
  • react 中 useEffect Hook 作用
  • 数据库对象映射
  • java程序打包及执行 jar命令及运行jar文件
  • A20红色革命文物征集管理系统
  • 【核心变量】上市公司企业战略激进度数据 (2004-2023年)
  • libaom 源码分析:重叠块运动补偿OBMC
  • 农业产业链大延伸,农业强国梦正圆!
  • 线性表(顺序表和链表)
  • 负载均衡算法常见实现
  • 【韩老师零基础30天学会Java 】03章 变量
  • pyspark入门基础详细讲解
  • 暮雨直播 1.3.2 | 内置直播源,频道丰富,永久免费
  • 玩的花,云产品也能拼团了!!!
  • 常用的c++特性-->day02
  • 三周精通FastAPI:38 针对不同的编程语言来生成客户端
  • 分享:文本转换工具:PDF转图片,WORD转PDF,WORD转图片
  • 测试实项中的偶必现难测bug--短信触发H5拒绝行为
  • 机器学习-倒数5个项目(05)
  • 代码随想录第二十五天
  • 梦熊NOIP第一场
  • USB-A 5Gbps和USB-A 10Gbps的区别
  • Ascend Extension for PyTorch是个what?
  • 库打包工具 rollup