假设我有这个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
答案 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
值...