以下是使用LIMIT
和OFFSET
的一種解決方案。
-- latest
order by desc id/col_date desc limit 1
-- 2nd to latect
order by desc id/col_date desc limit 1,1
-- 3rd to latect
order by desc id/col_date desc limit 2,1
演示:
mysql> select * from (select 1 as a union select 2 union select 3) t;
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
+---+
3 rows in set (0.00 sec)
mysql> select * from (select 1 as a union select 2 union select 3) t order by a desc limit 1;
+---+
| a |
+---+
| 3 |
+---+
1 row in set (0.00 sec)
mysql> select * from (select 1 as a union select 2 union select 3) t order by a desc limit 1,1;
+---+
| a |
+---+
| 2 |
+---+
1 row in set (0.00 sec)
mysql> select * from (select 1 as a union select 2 union select 3) t order by a desc limit 2,1;
+---+
| a |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
參考:
http://dev.mysql.com/doc/refman/5.7/en/select.html
LIMIT子句可以被用來限制的行數由SELECT語句返回 。 LIMIT採用一個或兩個數字參數 ,它們都必須是非負整數常量,這些例外都是 例外:
在預準備語句中,LIMIT參數可以使用? 佔位符標記。
在存儲的程序中,可以使用整數值例程參數或局部變量來指定LIMIT參數。
使用兩個參數,第一個參數指定要返回的第一行的偏移量,第二個參數指定要返回的最大數量的行數 。初始行的偏移量爲0(不是1):
SELECT * FROM tbl LIMIT 5,10; #檢索行6-15
所以我的答案是否適合你?你是用另一種方式表達什麼意思?在您要求我們尋求幫助之前,您嘗試了什麼?你得到的錯誤是什麼? – androidnation
如果我將獲取最新的3條記錄,你的答案將起作用。我用另一種方式的意思是用最新的記錄,查詢將會像'SELECT * FROM slider ORDER BY date DESC LIMIT 1'一樣。但是當我想獲得第二張最新唱片的時候,我不再有想法該怎麼做。我嘗試搜索,但我得到的是如何一次獲取最新的3條記錄,這不是我想要做的。 @androidnation – louie
嘗試獲取數組中的所有行,然後使用索引獲取第二個最後的 – androidnation