以下是使用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