テーブルは次のとおりです。
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は正しい結果を得ることができますが、大量のデータの場合、実行速度が遅くなります。
**左外側の結合なしでこれを行う方法はありますか?**