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

问题描述 投票:0回答:7

我想知道是否有办法实现:

SELECT * FROM table

通过使用

LIMIT
OFFSET
,如下所示:

SELECT * FROM table LIMIT all OFFSET 0

我可以使用 LIMIT 和 OFFSET 编写 SQL 语句,但仍然得到所有结果吗?
*
当然,我可以使用IF

语句,但如果可能的话我宁愿避免它

mysql sql database postgresql sqlite
7个回答
44
投票
来自

MySQL 文档

检索从某个偏移量到结果末尾的所有行 设置时,您可以使用一些较大的数字作为第二个参数。这 语句检索从第 96 行到最后一行的所有行:

从 tbl LIMIT 95,18446744073709551615 中选择*;

因此获取所有行可能如下所示:

SELECT * FROM tbl LIMIT 0,18446744073709551615;
    

10
投票
是的,可以通过提供

NULL

:

SELECT * FROM tab LIMIT NULL OFFSET NULL

db<>摆弄 PostgreSQL 演示

7.6。限制和偏移

LIMIT ALL 与省略 LIMIT 子句相同,带有 NULL 参数的 LIMIT 也是如此。


雪花限制/获取

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

SELECT * FROM demo1 ORDER BY i LIMIT NULL OFFSET NULL; SELECT * FROM demo1 ORDER BY i LIMIT '' OFFSET ''; SELECT * FROM demo1 ORDER BY i LIMIT $$$$ OFFSET $$$$;

    

3
投票
我在nodeJS和MySQL中使用了这段代码,它运行良好,它可能对你有帮助。 你为什么用它?

    它是可靠的,因为它是一个将附加查询的字符串。
  1. 如果你想设置限制,那么你可以用变量来限制,否则用变量传递0。

    var noOfGroupShow=0; //0: all, rest according to number if (noOfGroupShow == 0) { noOfGroupShow = ''; } else { noOfGroupShow = ' LIMIT 0, '+noOfGroupShow; } var sqlGetUser = "SELECT `user_name`,`first_name`,`last_name`,`image`,`latitude`, `longitude`,`phone`,`gender`,`country`,`status_message`,`dob` as user_date_of_birth FROM `tb_user` WHERE `user_id`=?"+noOfGroupShow;
    
    

2
投票
这可能不是最好的方法,但这是我首先想到的......

SELECT * FROM myTable LIMIT 0,1000000



将 1000000 替换为某个足够大的数字,您知道该数字始终大于表中的记录总数。


2
投票
随着记录的增长,使用

mysql_num_rows

动态查找记录总数,而不是使用
some large number

$cektotalrec=mysql_query("SELECT * FROM TABLE"); $numoffset=mysql_num_rows($cektotalrec); $numlimit="0";

然后:

$final="SELECT * FROM table ".$numlimit.", ".$numoffset"";
    

1
投票
也许不是最干净的解决方案,但将限制设置为非常高的数字可能会起作用。偏移量必须为 0。

为什么不使用

IF

 语句将限制和偏移添加到查询中,因为语句是正确的?


-1
投票
  1. 如果您将限制设置为 mysql 文档定义的非常高的数字,您可能会收到错误。因此,您应该尝试将其限制为 9999999999999,除非您将服务器设置为更高,否则更高可能会给您带来错误。

  2. 您可能想在函数中使用 LIMIT,因此这不是一个坏主意。如果您在函数中使用它,您可能希望它在某一点为 Limit All,在另一点为 Limit 1。

  3. 下面,我列出了一个示例,您可能希望您的应用程序没有限制。

函数 get_navigation($select = "*", $from= "页面", $visible= 1, $subject_id = 2, $order_by = "位置", $sort_by = "asc", $offset=0, $limit = 9551615){ 全局$连接;

$query = " SELECT {$select} "; $query .= " FROM {$from} "; $query .= " WHERE visible = {$visible} "; $query .= " AND subject_id = {$subject_id} "; $query .= " ORDER BY {$order_by} {$sort_by} "; $query .= " LIMIT {$offset}, {$limit} "; mysqli_query($connection, $query); $navigation_set = mysqli_query($connection, $query); confirm_query($navigation_set); return $navigation_set; } define ("SELECT", "*"); define ("FROM", "pages"); define ("VISIBLE", 1); define ("SUBJECT_ID", 3); define ("ORDER_BY", "position"); define ("SORT_BY", "ASC"); define ("LIMIT", "0"); $navigation_set = get_navigation(SELECT, FROM, VISIBLE, SUBJECT_ID, ORDER_BY, SORT_BY);
    
© www.soinside.com 2019 - 2024. All rights reserved.