有什么办法可以在不同的查询中从数据库中获取最新的,第二个到最新的,第三个到最新的记录?因为我想对滑块图像/内容使用每个查询。如果我的问题令人困惑,请告诉我。
我知道有一种使用order by desc id
或date, limit 3
的方式,但只有一个查询,我想知道是否有办法只获取第二个到最新的和第三个到最新的记录。我知道最新的查询可以写成order by desc id
或date, limit 1
,我只是不知道如何查询第二和第三到最新的记录。
答案 0 :(得分:1)
以下是使用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