2 comments

[ 5.1 ms ] story [ 19.1 ms ] thread
I prefer SELECT table.* FROM table WHERE rev = (SELECT MAX(rev) FROM table WHERE id=table.id)

I hate joins. Subselects are so much clearer imo - and you don't end up with extra fields.

Or those who happen to be using a dialect of sql with window functions, selecting the rows where:

ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Rev DESC) AS "Row Number"

Returns 1 is clearer to my mind, with some caveats around dialects which use separate forms of row-number that assign identical/differing numbers to two consecutive identical rows.