比方說,我有以下的數據庫表:按順序獲取數據庫中的最後N行?
record_id | record_date | record_value
-----------+-------------+--------------
1 | 2010-05-01 | 195.00
2 | 2010-07-01 | 185.00
3 | 2010-09-01 | 175.00
4 | 2010-05-01 | 189.00
5 | 2010-06-01 | 185.00
6 | 2010-07-01 | 180.00
7 | 2010-08-01 | 175.00
8 | 2010-09-01 | 170.00
9 | 2010-10-01 | 165.00
我想抓住最後的5列由record_date ASC排序的數據。這是容易做到:
SELECT * FROM mytable ORDER BY record_date ASC LIMIT 5 OFFSET 4
這將使我:
record_id | record_date | record_value
-----------+-------------+--------------
6 | 2010-07-01 | 180.00
7 | 2010-08-01 | 175.00
3 | 2010-09-01 | 175.00
8 | 2010-09-01 | 170.00
9 | 2010-10-01 | 165.00
但是我怎麼做到這一點的時候,我不知道有多少記錄有和無法計算的魔力4個?
我已經試過此查詢,但如果有小於5分的記錄,它會導致負補償,這是無效的:
SELECT * FROM mytable ORDER BY record_date ASC LIMIT 5
OFFSET (SELECT COUNT(*) FROM mytable) - 5;
那麼,如何做到這一點?
對於第一個查詢:因爲我不希望有它的應用程序進行排序。對於第二個查詢:完美工作,但不適合我的DAL。好吧。謝謝! – Kristopher 2010-04-08 02:28:33
@Travis第二個查詢給出了一個錯誤。在ORDER BY – 2014-03-10 04:52:53
@AndyStowAway之前,嵌套查詢後面必須跟一個AS [query_name]語句:這可能是您實現的限制。我確信匿名子查詢是可以的(我知道他們在Postres和MySQL中工作)。 – 2014-03-31 23:27:51