今天敲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