首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何获得最新的记录?

我如何获得最新的记录?
EN

Stack Overflow用户
提问于 2015-07-23 22:39:41
回答 1查看 2.5K关注 0票数 0

这是我的表格:

代码语言:javascript
复制
create table test (
id string,
name string,
age string,
modified string)

这是我的数据:

代码语言:javascript
复制
id    name   age  modifed
1     a      10   2011-11-11 11:11:11
1     a      11   2012-11-11 12:00:00
2     b      20   2012-12-10 10:11:12
2     b      20   2012-12-10 10:11:12
2     b      20   2012-12-12 10:11:12
2     b      20   2012-12-15 10:11:12

我想要获得最新的记录(包括每一列的id,name,age,modified)按id分组,如上面的数据,正确的结果是:

代码语言:javascript
复制
1     a      11   2012-11-11 12:00:00
2     b      20   2012-12-15 10:11:12

我在配置单元中使用下面的查询,它在sql http://sqlfiddle.com/#!2/bfbd5/42中工作正常,但在配置单元中却不能正常工作。

代码语言:javascript
复制
select * from test where (id, modified) in(select id, max(modified) from test group by id)

我使用的是0.13版本的hive。

EN

回答 1

Stack Overflow用户

发布于 2015-07-24 05:43:35

配置单元仅允许在IN子查询中有一列。尝试左半联接:

代码语言:javascript
复制
SELECT *
FROM test a 
LEFT SEMI JOIN 
(select id, max(modified) as modified from test) b 
ON (a.modified = b.modified and a.id=b.id);

不过,看起来你可以很容易地用一个直接的查询得到正确的答案。选择两列中的最大值,并确保按没有聚合函数的列进行分组。

代码语言:javascript
复制
select id
, name
, max(age) as age
, max(modified) as modified
from test
group by id, name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31590599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档