mysql-偏移量问题

mysql-偏移量问题,mysql,syntax,offset,Mysql,Syntax,Offset,我最近发布了一个关于以正确顺序获取表中最后3个结果的问题。现在,我希望以正确的顺序获取除最后3条之外的所有注释 这是我的语法 SELECT * FROM (SELECT * FROM $table ORDER BY ID DESC OFFSET 3) AS T ORDER BY TIME_STAMP 我收到的错误是: 您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用“OFFSET,3)AS T ORDER BY TI

我最近发布了一个关于以正确顺序获取表中最后3个结果的问题。现在,我希望以正确的顺序获取除最后3条之外的所有注释

这是我的语法

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      OFFSET 3) AS T 
ORDER BY TIME_STAMP
我收到的错误是:

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用“OFFSET,3)AS T ORDER BY TIME_STAMP”的正确语法


我似乎无法让它工作。非常感谢您的帮助。

您不能无限制地使用偏移量

虽然有点笨重,但这个查询对我来说是有效的,如果没有冗余的内部子查询(mysql 5.0.90)就无法工作

根据报告:

从某个数据库中检索所有行的步骤 偏移到结果的末尾 设置时,可以使用一些较大的数字 第二个参数。此声明 从第96行检索所有行 直到最后:

他们建议您使用以下查询:

SELECT * FROM tbl LIMIT 95,18446744073709551615;
因此,在您的情况下,您应该尝试:

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      LIMIT 3,18446744073709551615) AS T 
ORDER BY TIME_STAMP
请注意,您还可以使用关键字
OFFSET
,使用与PostgreSQL兼容的版本:

SELECT *
FROM (SELECT * 
      FROM $table 
      ORDER BY ID DESC 
      LIMIT 18446744073709551615 OFFSET 3) AS T 
ORDER BY TIME_STAMP

如果您想知道,
18446744073709551615=2^64-1

也有同样的问题,因为我复制了:

OFFSET :offset LIMIT :limit
来自现有查询,该查询在Postgres中有效

显然,在MySQL中,顺序很重要,所以颠倒顺序对我来说很有效:

LIMIT :limit OFFSET :offset 

我认为OP正在寻找相反的结果。获取除最后3条记录之外的所有记录。@Daniel:这就是这个语句的作用。它跳过前3行并返回其余的。实际上,该查询可以做任何你想做的事情,只需将DESC替换为ASC:)@Nicholas:如果你颠倒顺序,那么你需要知道要选择多少行,这样你就不会得到最后3行(即count-3)。我必须将偏移量更改为3,但这是完美的。
LIMIT :limit OFFSET :offset