I have an simple question (?) about SQL. I have come across this problem a few times before and I have always solved it, but I’m looking for a more elegant solution and perhaps a faster solution.
The problem is that I would like to select all rows in a table except the one with the max value in a timestampvalue (in this case this is a summary row but it’s not marked as this is any way, and it’s not releveant to my result).
I could do something like this:
select * from [table] t
where loggedat < (select max(loggedat) from [table] and somecolumn='somevalue')
and somecolumn='somevalue'
But when working with large tables this seems kind of slow. Any suggestions?
If only you don’t mind one tiny (4 byte) extra column, then you might possibly go like this:
In case you do mind the extra column, you’ll just have to list the necessary columns explicitly in the outer SELECT.