таблица:
create table test (
id string,
name string,
age string,
modified string)
:
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, имя, возраст, модифицированную группу) по id, в качестве данных выше, правильный результат:
1 a 11 2012-11-11 12:00:00
2 b 20 2012-12-15 10:11:12
Мне нравится следующее:
insert overwrite table t
select b.id, b.name, b.age, b.modified
from (
select id,max(modified) as modified
from test
group by id
) a
left outer join test b on (a.id=b.id and a.modified=b.modified);
Этот sql может получить правильный результат, но при массовых данных он работает медленно.
** Есть ли способ сделать это без левого внешнего соединения? **