Mysql分组查询时间最近的一条数据

文章提供了两种SQL查询方法来获取图书馆借书记录表中每个学生最近一次借书的信息。方法一是使用嵌套子查询,通过比较最大借书时间找到每个学生的最新记录。方法二是通过内连接结合聚合函数max()达到相同目的。这两种方法都聚焦于找出每个学生最新的借书时间及其详细信息。
摘要由CSDN通过智能技术生成

需求描述

 现有图书馆借书记录表如下:需要分组查询每个学生最近一次借书的记录

借书记录表(borrow_books_record)
student_id(学号)student_name(姓名)

book_name

(书名)

borrow_time

(借书时间)

predict_return_date(预计归还日期)

actual_return_time

(实际归还时间)

202201张三三国演义2023-01-01 10:12:562023-01-152023-01-08 09:13:55
202302李四水浒传2023-01-02 10:12:562023-01-162023-01-16 15:16:12
202301张三西游记2023-01-10 10:12:562023-01-202023-01-20 11:23:56

解决方案

  • 1.方法1,嵌套子查询
select *from  
    borrow_books_record br,

    (select student_id , max(borrow_time) as lastBorrowTime from borrow_books_record
     group by student_id) br1
where 
    br.student_id=br1.student_id and br.borrow_time = br1.lastBorrowTime 
group by br.student_id

执行这段sql语句,查询到的就是每个学生最近一次借书的数据。

  • 方法2 内连接+聚合函数
select 
   br.student_id,
   br.student_name,
   br.book_name,
   br.borrow_time,
   br.predict_return_date,
   br.actual_return_time
from 
   borrow_books_record br
   inner join(
         select student_id,max(borrow_time) as lastBorrowTime 
         from borrow_books_record
         group by student_id
         ) br1 on br1.student_id=br.student_id and br1.lastBorrowTime = br.borrow_time

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cc阿正

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值