Given the following data in a table named 'foo' : id update_time description 2 2005-08-24 00:10:00
transaction1 2 2005-08-24 00:22:00 transaction2 2 2005-08-24 00:34:00 transaction3 2 2005-08-24
00:58:00 transaction4
I want to select 2nd oldest transaction from foo (transaction 3). The
solution below
works, but I think there may be a better way. Does anyone else have a better
idea?
select * from foo f1 join (select id, update_time from foo except select id, max(update_time) as update_time
fromfoo group by id) f2
using (id, update_time)
order by 1, 2 desc limit 1;