hive:选择列具有最大值的行,而不选择join

plupiseo  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(382)

在表上写入配置单元查询以选择列中具有最大值的行有一个包含以下数据的表,例如:

key    value    updated_at
  1    "a"      1  
  1    "b"      2  
  1    "c"      3

需要选择上次更新的行。当前使用以下逻辑

select tab1.* from table_name tab1
join select tab2.key , max(tab2.updated_at) as max_updated from table_name tab2
on tab1.key=tab2.key and tab1.updated_at = tab2.max_updated;

有没有其他更好的方法来实现这一点?

omvjsjqw

omvjsjqw1#

如果这是真的 updated_at 对于该表来说是唯一的,那么下面可能是一种更简单的方法来获取您要查找的内容:

-- I'm using Hive 0.13.0
SELECT * FROM table_name ORDER BY updated_at DESC LIMIT 1;

如果可能的话 updated_at 由于某些原因,要成为非唯一的,可能需要调整 ORDER BY 以你所希望的方式打破任何联系的逻辑。

相关问题