MySQLi查询中的LIMIT问题

时间:2018-04-20 10:27:31

标签: php mysql mysqli

我有三个PHP API,它们具有以下查询:

API 1:

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 0,700";

API 2:

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 701,1400";

API 3:

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 1401,2100";

我想在每个API中记录700条记录。例如,

API 1中

0到700,

API 2中的701到1400和

API 3中的1401到2100(如上所示)。

API 1工作正常,但API 2和3缺少结果。

为什么会发生这种情况?如何纠正?

3 个答案:

答案 0 :(得分:4)

API 1

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 0,700";

API 2

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 700,700";

API 3

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 
   order by id LIMIT 1400,700";

<强>解释

  

Mysql还提供了一种处理方法:使用OFFSET。

下面的SQL查询说&#34;只返回10条记录,从记录16开始(OFFSET 15)&#34;

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

您还可以使用更短的语法来获得相同的结果:

$sql = "SELECT * FROM Orders LIMIT 15, 10";

<强>演示

  

http://sqlfiddle.com/#!9/10ff28/7

答案 1 :(得分:1)

限制中的第二个参数说明了你需要的行的大小,因为你需要一个700的块,逗号之后的第二个部分总是700.

所以你的查询就像

LIMIT 0,700";   //for api 1

LIMIT 700,700"; //for api 2

LIMIT 1400,700"; //for api 3

答案 2 :(得分:0)

  

LIMIT关键字用于限制从

返回的行数      

结果集。 LIMIT编号可以是从零(0)开始的任何数字

     

向上。如果将零(0)指定为限制,则不返回任何行

     

从结果集中。 OFF SET值允许我们指定哪一行

     

从检索数据开始它可以与

一起使用      

SELECT,UPDATE或DELETE命令LIMIT关键字语法

SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;

在你的情况下,它将是:

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 order by id LIMIT 700,700";

$sql = "SELECT number, status, user_id from number_list WHERE disable=0 order by id LIMIT 1400,700";