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

MySQL 查询分组内最新的第一条数据

目录

1、MySQL 5版本的写法

2、MySQL 8版本的写法


由于MySQL 5不支持窗口函数,因此不能使用PARTITION()ROW_NUMBER()

🌰:获取每个班级中最新注册的学号人员信息

也就是从 user_info 学生表中获取每个 class_id 班级的最新一条记录

1、MySQL 5版本的写法

🔴写法1:

SELECT u.user_id, u.class_id, u.user_name, u.time
FROM (SELECT class_id, MAX(time) AS max_timeFROM user_infoGROUP BY class_id
) AS latest
JOIN user_info u ON u.class_id = latest.class_id AND u.time = latest.max_time;

释意:

1、子查询:

  • 子查询从 user_info 表中选择 class_id 和每个班级的最大 time 值。
  • 使用 GROUP BY class_id 对数据按班级分组。
  • 使用 MAX(time) 函数计算每个班级的最大时间值。

2、外层查询:

  • 外层查询使用 JOIN 操作连接子查询结果和 user_info 表。
  • JOIN 条件是 u.class_id = latest.class_id AND u.time = latest.max_time,这确保了对于每个班级,只有时间值等于该班级最大时间值的记录被选取出来

🔴写法2:

SELECT user.user_id, user.class_id, user.user_name, user.time 
FROM ( SELECT user_id, class_id, user_name, time FROM user_info ORDER BY time DESC 
) AS user 
GROUP BY user.class_id;

释意:

1、子查询:

  • 子查询从 user_info 表中选择 user_id, user_name, 和 time 字段。
  • 子查询按照 time 字段降序排列,这意味着最近的时间将排在前面。

2、外层查询:

  • 外层查询从子查询的结果集中选择所有字段。
  • 使用 GROUP BY user.user_id 对结果集按 user_id 分组,这意味着每个 user_id 将只保留一条记录MySQL 5版本的写法:

2、MySQL 8版本的写法

SELECT user_id, class_id, user_name, time
FROM (SELECT user_id, class_id, user_name, time,ROW_NUMBER() OVER (PARTITION BY class_id ORDER BY time DESC) AS rnFROM user_info
) AS user
WHERE rn = 1;

释意:

1、子查询:使用窗口函数 ROW_NUMBER() 来对每个class_id分组,并按照time降序排列。

2.、外层查询:选择每个class_id中 rn 等于 1 的记录,这样可以获得每个班级最新的用户信息

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • go语言源码解读之数据结构堆
  • Redis远程字典服务器(5) —— list类型详解
  • Cocos Creator倒计时
  • jenkins升级踩坑记录
  • service 管理 web 管理插件
  • 电子音乐制作软件有哪些 电音制作用什么软件 好用的能够创作音乐的软件推荐 电音基础新手入门
  • OpenCV--图像梯度处理,图片轮廓,边缘检测
  • 打印一个字符串全部子序列(没有重复字面值)
  • 刷题记录第108天-求一个数的平方根(精确到小数点后五位)
  • 使用 C/C++访问 MySQL
  • repo简介
  • CUDA C++ 编程指南学习(待更)
  • ubuntu16.04安装ibus拼音 输入法
  • 使用功率器件比如MOSFET瞬态热阻曲线计算参数
  • C++入门教程(10):for 语句
  • Meteor的表单提交:Form
  • vuex 学习笔记 01
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 微信小程序开发问题汇总
  • 阿里云ACE认证学习知识点梳理
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #《AI中文版》V3 第 1 章 概述
  • #QT(智能家居界面-界面切换)
  • #职场发展#其他
  • (152)时序收敛--->(02)时序收敛二
  • (175)FPGA门控时钟技术
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • 、写入Shellcode到注册表上线
  • .ai域名是什么后缀?
  • .mysql secret在哪_MySQL如何使用索引
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Micro Framework初体验
  • .NET 读取 JSON格式的数据
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET简谈设计模式之(单件模式)
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ JavaScript ] JSON方法
  • [ 第一章] JavaScript 简史
  • [Android] Implementation vs API dependency
  • [BT]BUUCTF刷题第4天(3.22)
  • [C#]winform部署官方yolov10目标检测的onnx模型
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [EFI]Acer Aspire A515-54g电脑 Hackintosh 黑苹果efi引导文件
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日