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

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

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

编号num    价格price    时间 time
1    5    1
1    6    2
2    10    3
2    8    4
查询结果应该为

编号num    价格price    时间 time
1    6    2
2    8    4
想了半天这个查询都得查两次
实现方式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
————————————————
版权声明:本文为CSDN博主「酥梨儿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43313769/article/details/98097214

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值