1

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.

4 Answers4

2
select *
from table 
order by Date desc
limit 0, 3
D'Arcy Rittich
  • 167,292
  • 40
  • 290
  • 283
1

Can MySQl do TOP ? If so

   Select Top 3 * From Table
   Order By Date Desc
Charles Bretana
  • 143,358
  • 22
  • 150
  • 216
0

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.

Michael Todd
  • 16,679
  • 4
  • 49
  • 69
0

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.

winwaed
  • 7,645
  • 6
  • 36
  • 81