我想知道是否有办法实现:
SELECT * FROM table
通过使用
LIMIT
和 OFFSET
,如下所示:
SELECT * FROM table LIMIT all OFFSET 0
我可以使用 LIMIT 和 OFFSET 编写 SQL 语句,但仍然得到所有结果吗?
*
当然,我可以使用IF
语句,但如果可能的话我宁愿避免它
MySQL 文档:
检索从某个偏移量到结果末尾的所有行 设置时,您可以使用一些较大的数字作为第二个参数。这 语句检索从第 96 行到最后一行的所有行:因此获取所有行可能如下所示:从 tbl LIMIT 95,18446744073709551615 中选择*;
SELECT * FROM tbl LIMIT 0,18446744073709551615;
NULL
:
SELECT * FROM tab LIMIT NULL OFFSET NULL
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 $$$$;
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;
SELECT * FROM myTable LIMIT 0,1000000
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"";
为什么不使用
IF
语句将限制和偏移添加到查询中,因为语句是正确的?
$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);