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

【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.kler.cn/a/386704.html

相关文章:

  • 基于微信小程序的公务员考试学习平台的设计与实现,LW+源码+讲解
  • 【JAVA基础】JVM是什么?
  • 在Java中使用ModelMapper简化Shapefile属性转JavaBean实战
  • LeetCode【0027】移除元素
  • 【Playwright + Python】系列(十)利用 Playwright 完美处理 Dialogs 对话框
  • 【电力系统】永磁同步电机调速系统带有扰动观测器
  • 海康私有化视频平台EasyCVR视频分析设备平台流媒体协议RTMP、HTTP-FLV、HLS的简单对比
  • HTML5+css3(定位属性,position:absolute,relative,fixed,相对定位,绝对定位,固定定位,z-index属性)
  • 01、机器学习概述
  • 《EasyQuotation 与MongoDB在股市信息的奇妙融合》
  • javaFX controlsfx 控件之SpreadsheetView
  • EDUCODER头哥 SpringBoot初体验
  • 124. Raycaster(射线拾取模型)
  • Guarding the Chessboard(UVA 11214)
  • uniapp—android原生插件开发(3Android真机调试)
  • 网络--传输层协议--TCP
  • 【LeetCode每日一题】——802.找到最终的安全状态
  • C++学习笔记----10、模块、头文件及各种主题(三)---- 连接
  • VMWARE ESXI VMFS阵列故障 服务器数据恢复
  • aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?
  • Qt教程(007):资源文件添加
  • nodejs:下载,安装,系统环境配置,更换镜像
  • Leetcode - 周赛422
  • Kafka集群的安装与部署
  • 《Android 车载 Launcher 开发 - 显示 Widget》
  • docker pull/build 失败 设置国内镜像源