sql语句中分组取每组的最新数据

sql 专栏收录该内容
2 篇文章 0 订阅

今天敲sql的时候遇到了一个问题,业务流程是
检查记录->整改通知->整改回复->检查组复查
如果复查不通过 则 检查组复查->整改通知->整改回复->检查组复查
此时一条检查记录就可能对应多条整改通知去最新数据就用到了分组

简化一下模型 要显示最新时刻的物品价格goods(其实不太一样我的情况主键相当于这里的time)

编号num价格price时间 time
151
162
2103
284

查询结果应该为

编号num价格price时间 time
162
284

想了半天这个查询都得查两次
实现方式1
select * from goods right join
(select max(time) maxtime from goods group by num) c on goods.time=c.maxtime
在这里插入图片描述
实现方式2(如果time是唯一的话)
select * from goods where time in (select max(time)from goods group by num) ;
在这里插入图片描述
实现方式3(在 oracle数据库中)
select * from (select num ,row_number() over (partition by time order by num desc) flag from goods) where flag=1

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值