37

我想知道是否有办法完成:

SELECT * FROM table

通过使用LIMITOFFSET像这样:

SELECT * FROM table LIMIT all OFFSET 0

我可以使用LIMIT 和 OFFSET 编写 SQL 语句但仍然得到 ALL 结果吗?

*当然我可以使用一个IF语句,但如果可能的话我宁愿避免它

4

7 回答 7

40

MySQL 文档

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

从 tbl 限制 95,18446744073709551615 中选择 *;

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

SELECT * FROM tbl LIMIT 0,18446744073709551615;
于 2013-04-11T14:08:49.520 回答
3

这可能不是最好的方法,但它是第一个想到的......

SELECT * FROM myTable LIMIT 0,1000000

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

于 2013-04-11T14:10:38.810 回答
3

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

  1. 它是可靠的,因为它是一个将附加查询的字符串。
  2. 如果要设置限制,则可以将限制与变量一起使用,否则将 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;
    
于 2015-06-26T10:50:01.190 回答
3
于 2020-08-04T19:00:50.987 回答
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"";
于 2017-09-08T04:48:42.793 回答
1

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

为什么不使用IF将限制和偏移量添加到查询的语句,因为语句是真的?

于 2013-04-11T14:09:15.577 回答
-1
  1. 如果将限制设置为 mysql doc 定义的非常高的数字,则可能会收到错误消息。因此,您应该尝试将其限制为 9999999999999,除非您将服务器设置为更高,否则更高可能会给您带来错误。

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

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

函数 get_navigation($select = "*", $from= "pages", $visible= 1, $subject_id = 2, $order_by = "position", $sort_by = "asc", $offset=0, $limit = 9551615 ){ 全局 $connection;

$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); 
于 2015-03-30T18:52:22.293 回答