从ORDER BY查询的结果中选择数据

时间:2012-02-12 12:17:10

标签: php mysql

假设我有这个SQL查询:

SELECT * FROM questions ORDER BY votes LIMIT 3

这是在一个页面上加载的。如何通过提供检索到的最后一个ID(1)来获得下一个3。表格示例:

ID votes
--------
 4   29
45   26
 1   23
 7   13
23    5
 9    2

4 个答案:

答案 0 :(得分:2)

SELECT * FROM questions ORDER BY votes LIMIT 3, 3

您可以使用限制选择范围。 Ex限制x,y,其中x = start,y = length

修改

因为你说你希望通过传递id来获得这个。您可以使用以下类型的查询获取相关数据集。

SELECT * FROM questions WHERE votes <= (SELECT votes FROM questions WHERE id = 1) AND id != 1 ORDER BY  votes DESC LIMIT 3

但是,如果您有多个具有相同投票的记录,则会出现问题。因此,我建议您保留迄今为止已取代的记录数。

$displayed = 0;
$rowsPerPage = 3;

因此,您只需通过传递这些参数即可轻松获取数据。

$start = 1;
if($displayed >0)
$start = $displayed + $rowsPerPage;

$ sql =“SELECT * FROM questions ORDER BY votes LIMIT $ start,$ rowsPerPage”;

在下一页加载或分页增加$displayed

$displayed +=  $rowsPerPage;

如果您有页面加载,则必须将$显示为会话,否则它可能是参数。

答案 1 :(得分:1)

您应该使用LIMIT <offset>, <count>标记而不是检索到的最后一个ID,因为您是通过投票而非ID来订购。

SELECT * FROM questions ORDER BY votes LIMIT 3, 3

答案 2 :(得分:1)

您可以使用偏移SELECT * FROM table_name LIMIT offset,limit

示例:

SELECT * FROM questions ORDER BY votes LIMIT 3,3

答案 3 :(得分:1)

使用以下

设置1:SELECT * FROM questions ORDER BY votes LIMIT 3

设置2:SELECT * FROM questions ORDER BY votes LIMIT 4, 3

设置3:SELECT * FROM questions ORDER BY votes LIMIT 7, 3

依旧......

您需要继续更改offset值...

祝你好运!!!