Oracle中两个表相关联的数据去重

<1>案件表tb_case(title:案件标题,detail:案件的介绍)idtitledetail1标题1详情12标题2详情2<2>案件处理的每步流程表tb_proc... <1>案件表tb_case(title:案件标题,detail:案件的介绍)
id title detail
1 标题1 详情1
2 标题2 详情2

<2>案件处理的每步流程表tb_process(name:流程名,num:流程步骤,pid:属于哪个案件)
id name num pid
1 流程1 1 1
2 流程2 2 1
3 流程1 1 2
4 流程2 2 2

问题:根据主表的ID,和子表的pid相关联,查询出来的结果是,<<主表的字段信息+子表中num最大的那条信息(包括子表的所有的字段)>>
,这该怎么去查询?直接关联查询的话肯定有重复的,会把所有的信息都查询出来,会有4个结果,但是最终的结果只想要2条关联的数据, 该怎么写sql?
展开
 我来答
亥凝思3q
2014-05-25 · TA获得超过313个赞
知道小有建树答主
回答量:400
采纳率:14%
帮助的人:173万
展开全部
with  p as (
select  t1.id,t1.content,t1.process_name,t1.pid, t1.process_num from (
select t.*, row_number() over(partition by t.pid order by t.process_num desc ) ord
     tb_process t ) t1  where  ord =1)
select c.*,p.* from tb_case c,p where c.id=p.pid;
--请采纳

    

追问
还有别的方式吗?或者解释下语法的意思,能运行起来,结果也对,可是不知道with写前面的意思是??
追答
with name as() 意思是将 as 后的查询结果当做一个结果集来用,名字为name,就这么简单,with as 的作用是 让整个语句结构看起来清晰点。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式