如何选择最新的记录

时间:2018-06-06 18:40:35

标签: hive conditional max

enter image description here

选择id,name,max(modify_time) 来自客户 按ID分组,名称

但我得到了所有记录。

3 个答案:

答案 0 :(得分:0)

ID是唯一的,这意味着按ID分组它们将产生相同的表。

我的建议是,按“modify_time”降序排序表并将结果限制为1(可能类似于以下内容):

Select id, name modify_time from customer ORDER BY modify_time DESC limit 1

答案 1 :(得分:0)

您获取整个表的原因是因为您按ID和名称进行分组。这意味着返回id和name的每个唯一组合。由于每个id的所有名称都不同,因此返回整个表。

如果您希望每个ID(或名称)进行最后一次修改,则只应按ID(或名称)进行分组。

答案 2 :(得分:0)

按modify_time desc排序,并使用row_number为id,name组合的行编号。然后用row_number = 1选择每个组合

select id,modify_time,name
from (
        select id,modify_time,name,row_number() over(partition by id order by modify_time desc) as r_no
        from customer
     ) a
where a.r_no=1