概述
首先讲一下场景,有一个父表订单表,子表货物表。
一个订单下会有多条货物信息。
我们要根据一个船名航次筛选出X个订单,假定为6个。
然后每个订单下又有三个货物,最终要拿到6个订单中最新的货物数据,也就是6条数据。
SQL语句如下
SELECT
* FROM
(
SELECT
G.字段1,G.字段2,G.字段3,
row_number() over( partition by I.订单名称 order by NVL(G.最后编辑时间,G.新增时间) DESC) RN
FROM 货物表 G
LEFT JOIN 订单表 I
ON 关联关系
WHERE 筛选条件 --比如i.isdel='0'
) R
WHERE R.RN=1
就是先把根据订单名称分组且按最后时间desc排序的数据加上序号,每个订单名称对应的排序号都是123,然后再在最外层筛选出排序号等于1的数据,就拿到最新的了。
row_number()就是加序号。
重点就是 over(partition by ) 后跟什么就根据什么字段分组,order by就是排序 正序asc 倒序desc 新手不要写错成dasc....
nvl的用法可能会有新手不懂,就是在前边值为空的时候取后边的值,非常适用于此类场景。
最后
以上就是诚心台灯为你收集整理的ORCALE中父子表联表查询and去重and筛选出子表中对应的最新一条数据的全部内容,希望文章能够帮你解决ORCALE中父子表联表查询and去重and筛选出子表中对应的最新一条数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复