从数据库

时间:2016-04-02 14:30:12

标签: php mysql sql

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

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

1 个答案:

答案 0 :(得分: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):

     

SELECT * FROM tbl LIMIT 5,10; #检索行6-15