我目前正在使用php和sql创建一个论坛。 我的问题是如何让主题按正确的顺序排列,假设每页总共有200和15,我在第10页。
我无法选择每个ID,因为如果有人在其中一个主题中发布了时间戳 该特定主题的更新 - >最新的。
对于第一页,这样的事情可能没问题:
select * from topics order by time desc limit 15
但是对于下一页,我需要之前页面上最后一个主题的时间戳。
如果我可以通过相对于时间戳顺序的索引选择特定表而不需要实际索引。
答案 0 :(得分:1)
我建议您检查MySQL documentations以获取LIMIT子句的第二个参数:
使用两个参数,第一个参数指定的偏移量 第一行返回,第二行指定最大数量 要返回的行。初始行的偏移量为0(不是1)
语法:
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
示例:
-- page 2:
SELECT * FROM topics ORDER BY time DESC LIMIT 15, 15;
SELECT * FROM topics ORDER BY time DESC LIMIT 15 OFFSET 15;
-- page 3:
SELECT * FROM topics ORDER BY time DESC LIMIT 30, 15;
SELECT * FROM topics ORDER BY time DESC LIMIT 15 OFFSET 30;
-- page n:
SELECT * FROM topics ORDER BY time DESC LIMIT (n-1)*15, 15;
SELECT * FROM topics ORDER BY time DESC LIMIT 15 OFFSET (n-1)*15;