0

我有一个包含带有时间戳的行的表。

通常,如果我想根据时间获取最新的 20 行。我用:

$sql = "SELECT * 
    FROM comment 
    ORDER BY time DESC 
    LIMIT 20";

但是现在,我想在最新的 20 行和LIMIT10 行之后获得最新的评论。这意味着第 21-30 行。(当然,一切都根据时间戳)

我怎样才能使用 MySQL 做到这一点?

4

5 回答 5

3

MySQL 有一个内置的偏移量,可以与 LIMIT 一起使用:

$sql = "SELECT * FROM comment ORDER BY time DESC LIMIT 10, 20";

另外,请参阅此 SO 帖子:MySQL LIMIT/OFFSET:获取除第一个 X 之外的所有记录

于 2013-03-16T08:44:30.733 回答
1
$sql = "SELECT * FROM comment ORDER BY time DESC LIMIT 20, 10";
于 2013-03-16T09:02:20.790 回答
1

希望它会从 21 到 30 条记录中选择

sql = "SELECT * FROM comment ORDER BY ID DESC LIMIT 20, 10";
于 2013-03-16T09:46:58.203 回答
0

尝试混合限制

$sql = "select * from (SELECT * FROM comment ORDER BY time DESC LIMIT 30) as A order by time ASC limit 10";

其他人发布的 mysql 内置偏移方法看起来更好。

于 2013-03-16T08:44:40.270 回答
-1

有两种选择:

  • 获取 30 行并使用 PHP 将结果集拆分为 20 组和 10 组。
  • 发送两个查询,一个针对 20 行,一个针对 10 行。
于 2013-03-16T08:44:54.970 回答