mysqli查询中的php限制问题

56lgkhnf  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(428)

我有三个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和api 3缺少一个结果。
为什么会发生这种情况?我该如何纠正?

hof1towb

hof1towb1#

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查询表示“仅返回10条记录,从记录16开始(偏移量15)”:

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

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

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

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

wlp8pajw

wlp8pajw2#

limit中的第二个参数讨论所需行的大小,因此在本例中,由于需要700块数据,逗号后面的第二部分将始终是700。
所以你的问题会是

LIMIT 0,700";   //for api 1

LIMIT 700,700"; //for api 2

LIMIT 1400,700"; //for api 3
flvlnr44

flvlnr443#

limit关键字用于限制从中返回的行数
结果集。极限数可以是从零(0)开始的任意数
向上。将零(0)指定为限制时,不返回任何行
从结果集中。偏移值允许我们指定哪一行
从检索数据开始,它可以与
选择、更新或删除命令限制关键字语法

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";

相关问题