Reputation:
I have a table with dates in "Aug 23, 2009" format and 5 values, so that it looks like this
SELECT * FROM table;
Date | Total | V1 | V2 | V3 | V4
Aug 21, 2009 | 41 | 23 | 8 | 8 | 2
Aug 22, 2009 | 39 | 22 | 8 | 7 | 2
Aug 23, 2009 | 35 | 20 | 6 | 7 | 2
Aug 24, 2009 | 34 | 20 | 6 | 6 | 2
Aug 25, 2009 | 32 | 19 | 5 | 6 | 2
Aug 26, 2009 | 31 | 19 | 5 | 5 | 2
Aug 27, 2009 | 30 | 19 | 5 | 5 | 1
So I need a query that will give me only the most recent (bottom) 3 entries. Should I setup some query by the date or just set a limit to the last 3 rows? I tried doing a subquery with a limit, but my version of MySQL does not support LIMIT in subquery, and to my knowledge there is no way to do a negative limit to grab the last x number of rows.
Upvotes: 1
Views: 365
Reputation: 7829
You don't need a sub-query, just use a LIMIT clause in your SELECT statement, and add an ORDER BY 'date' DESC clause. Generally it is a bad idea to use column names such as 'DATE' (or 'DATETIME' for that matter) because different databases may use these as reserved words.
Upvotes: 0
Reputation: 146587
Can MySQl do TOP ? If so
Select Top 3 * From Table
Order By Date Desc
Upvotes: 1
Reputation: 17071
Just change the order by to do your LIMIT.
So, in other words, add
ORDER BY `date` DESC
to your select statement. You'll then be a ble to limit the return results to whatever row count you need.
Upvotes: 0