SQL比较两个表并获取具有最新日期的记录

时间:2016-09-06 18:01:13

标签: sql database oracle11g

有2张桌子。表a和b。 A包含msisdn,firstname,secondname,lastname,regdate(注册数据)。表b也有相同的字段。 msisdn X在表A和表B中,有两个不同的regdate。我需要查询两个表并获得具有最近regdate的结果。

如表中的msisdn X regdate是01 / APR / 2016而表B中的X regdate是01 / AUG / 2016,当我查询时我应该从B得到X的结果,因为它具有最新的regdate。 / p>

感谢

2 个答案:

答案 0 :(得分:0)

尝试:

SELECT msisdn, max(regdate)
FROM (SELECT msisdn, regdate
FROM tablea
UNION
SELECT msisdn, regdate
FROM tableb)
group by msisdn;

答案 1 :(得分:0)

如果您想要完整的记录:

select ab.*
from (select ab.*,
             row_number() over (partition by msisdn order by regdate desc) as seqnum
      from ((select a.*
             from tablea a
            ) union all
            (select b.*
             from tableb b
            )
           ) ab
     ) ab
where seqnum = 1;