使用MySQL LIMIT和OFFSET查询选择所有记录

Lio*_*rom 25 php mysql sql postgresql activerecord

我正在寻找一种方法来实现:

SELECT * FROM table
Run Code Online (Sandbox Code Playgroud)

但通过使用LIMITOFFSET喜欢这样:

SELECT * FROM table LIMIT all OFFSET 0
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 LIMIT和OFFSET 编写SQL语句但仍然获得所有结果?
(当然我可以使用一个IF声明,但如果可能的话我宁愿避免使用它)

任何帮助,将不胜感激!

sro*_*oes 30

MySQL文档:

要从特定偏移量检索所有行直到结果集的末尾,可以使用一些大数字作为第二个参数.此语句检索从第96行到最后一行的所有行:

SELECT*FROM tbl LIMIT 95,18446744073709551615;

所以获取所有行可能如下所示:

SELECT * FROM tbl LIMIT 0,18446744073709551615;
Run Code Online (Sandbox Code Playgroud)

  • "一些大数字" - MySQL ......太糟糕了 (31认同)
  • 18446744073709551615不仅仅是一些数字; 这是bigint的最大值 (16认同)
  • 我同意.像MAX_INT_NUMBER这样的东西,然后可能会根据系统处理器中未来的位数而改变. (2认同)
  • PHP 会将包含“18446744073709551615”的变量转换为 FLOAT 类型,导致仅检索 1 个结果。使用 PHP 7.3.12。 (2认同)

Luk*_*zda 11

是的,可以通过提供NULL

\n
SELECT * FROM tab LIMIT NULL OFFSET NULL\n
Run Code Online (Sandbox Code Playgroud)\n

db<>fiddle PostgreSQL 演示

\n
\n

7.6。限制和偏移

\n

LIMIT ALL 与省略 LIMIT 子句相同,就像带有 NULL 参数的 LIMIT 一样。

\n
\n
\n
\n

雪花限制/获取

\n

NULL空字符串 (\'\')$$$$也被接受并被视为\xe2\x80\x9cunlimited\xe2\x80\x9d;这主要对于连接器和驱动程序(例如 JDBC 驱动程序)有用,如果它们在将参数动态绑定到语句时收到不完整的参数列表。

\n
SELECT * FROM demo1 ORDER BY i LIMIT NULL OFFSET NULL;\n\nSELECT * FROM demo1 ORDER BY i LIMIT \'\' OFFSET \'\';\n\nSELECT * FROM demo1 ORDER BY i LIMIT $$$$ OFFSET $$$$; \n
Run Code Online (Sandbox Code Playgroud)\n
\n