从数据库中获取最新、倒数第二和倒数第三的记录


get the latest, second to the latest, and 3rd to the latest record from database

有没有办法在不同的查询中从数据库中获取最新、倒数第二和倒数第三的记录?因为我想对我的滑块图像/内容使用每个查询。如果我的问题令人困惑,请告诉我。

我知道有一种方法可以使用order by desc iddate, limit 3,但这只出现在一个查询中,我想知道是否有一种方式可以只获取最新记录的第二个和第三个。我知道最新的查询可以写成order by desc iddate, limit 1,我只是不知道用第二个和第三个查询最新的记录是什么。

这里有一个使用LIMITOFFSET的解决方案。

-- 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):

从待定极限5,10中选择*;#检索第6-15行