I have a table in PostgreSQL, I run a query on it with several conditions that returns multiple rows, ordered by one of the columns. In general it's:
SELECT <some columns> FROM mytable <maybe some joins here> WHERE <various conditions> ORDER BY date DESC
Now I'm only interested in getting the first and the last row from this query. I could get them outside of the db, inside my application (and this is what I actually do) but was wondering if for better performance I shouldn't get from the database only those 2 records I'm actually interested in.
And if so, how do I modify my query?
To get the first and last record, use UNION. LIMIT is also used to get the number of records you want.
FIRST() SQL FIRST() function returns the first value of the given column. LAST() SQL LAST() function returns the last value of the given column.
[Caveat: Might not be the most efficient way to do it]:
(SELECT <some columns> FROM mytable <maybe some joins here> WHERE <various conditions> ORDER BY date DESC LIMIT 1) UNION ALL (SELECT <some columns> FROM mytable <maybe some joins here> WHERE <various conditions> ORDER BY date ASC LIMIT 1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With