论坛首页 Java企业应用论坛

Oracle数据记录怎么去重

浏览 5778 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-25   最后修改:2010-10-25
  有2个表:
            A (Aid,name)
            B(bid,Aid,time) 

A表和B表 都有上万条记录

   如果B中有多条A记录,则只查询 B中 time(时间)教新的记录

   怎么才能AB关联,只显示 B中比较新的一条记录呢,有多条记录只显示最新的那一条


   发表时间:2010-10-25   最后修改:2010-10-25
select  A.Aid,A.name,B1.time from A left join
(select max(time) as time,Aid from B group by Aid ) B1
on A.Aid=B1.Aid
0 请登录后投票
   发表时间:2010-10-25  
finallygo 写道
select  A.Aid,A.name,B1.time from A left join
(select max(time) as time,Aid from B group by Aid ) B1
on A.Aid=B1.Aid



好像是个不错的方法
0 请登录后投票
   发表时间:2010-10-26  
可以先排时间降序分组排列,再取每一组中的每第一条。
row_number() over(partition by a.xx order by a.time desc)
0 请登录后投票
   发表时间:2010-10-26  
qiming1988 写道
可以先排时间降序分组排列,再取每一组中的每第一条。
row_number() over(partition by a.xx order by a.time desc)


oracle中用这种方法还是不错的
0 请登录后投票
   发表时间:2010-10-26  
qiming1988 写道
可以先排时间降序分组排列,再取每一组中的每第一条。
row_number() over(partition by a.xx order by a.time desc)


不是很清楚,能详细点不
0 请登录后投票
   发表时间:2010-10-26  
finallygo 写道
select  A.Aid,A.name,B1.time from A left join
(select max(time) as time,Aid from B group by Aid ) B1
on A.Aid=B1.Aid


想法一样
0 请登录后投票
   发表时间:2010-10-26   最后修改:2010-10-26
finallygo 写道
select  A.Aid,A.name,B1.time from A left join
(select max(time) as time,Aid from B group by Aid ) B1
on A.Aid=B1.Aid


正解
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics