如何从两个表中检索基于user_name的完整数据以及Hive中的最大日期

时间:2016-06-08 16:59:44

标签: mysql hive

例如,我有一个表A和B,其中包含以下数据:

user_name date1 count1 count2
X          15     1      1
X          30     1      3
Y          04     1      3

B:

user_name date1 count3 count4 status
X          15     11     1      Y
X          30     13     3      N
Y          04     16     3      NA

如何为每个Feedname连接这两个表并使用最大日期。 我需要这样的输出:

username date1 count1 count4 status
X         30    1      3        N
像这样的方式。 任何人都可以帮助解决这些问题。

1 个答案:

答案 0 :(得分:0)

由于根据您的评论,两个表中都存在每个组合(user_name,date1),您可以使用例如。

select a.*, b.count3, b.count4, b.status 
from tableA as a
join tableB as b
on a.user_name = b.user_name and   
   a.date1 = b.date1 
where not exists 
   (select 1 from tableA as a1
    where a1.user_name = a.user_name
      and a1.date1 > a.date1);

您希望在(user_name, date1)上设置索引以加快速度。

作为旁注:如果tableA中的每个条目在tableB中只有一个条目,反之亦然(如果情况确实如此,则说明不清楚,但是看起来像),因此(user_name, date1)将成为两个表中的主键,您绝对应该将列count3count4status添加到tableA并摆脱tableB。您仍然可以使用上面的代码(没有join)来查找每个用户的最大条目。