我有一个包含带有时间戳的行的表。
通常,如果我想根据时间获取最新的 20 行。我用:
$sql = "SELECT *
FROM comment
ORDER BY time DESC
LIMIT 20";
但是现在,我想在最新的 20 行和LIMIT
10 行之后获得最新的评论。这意味着第 21-30 行。(当然,一切都根据时间戳)
我怎样才能使用 MySQL 做到这一点?
MySQL 有一个内置的偏移量,可以与 LIMIT 一起使用:
$sql = "SELECT * FROM comment ORDER BY time DESC LIMIT 10, 20";
另外,请参阅此 SO 帖子:MySQL LIMIT/OFFSET:获取除第一个 X 之外的所有记录
$sql = "SELECT * FROM comment ORDER BY time DESC LIMIT 20, 10";
希望它会从 21 到 30 条记录中选择
sql = "SELECT * FROM comment ORDER BY ID DESC LIMIT 20, 10";
尝试混合限制
$sql = "select * from (SELECT * FROM comment ORDER BY time DESC LIMIT 30) as A order by time ASC limit 10";
其他人发布的 mysql 内置偏移方法看起来更好。
有两种选择: