我是靠谱客的博主 诚心台灯,最近开发中收集的这篇文章主要介绍ORCALE中父子表联表查询and去重and筛选出子表中对应的最新一条数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先讲一下场景,有一个父表订单表,子表货物表。

一个订单下会有多条货物信息。

我们要根据一个船名航次筛选出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筛选出子表中对应的最新一条数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部