我有三个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缺少结果。
为什么会发生这种情况?如何纠正?
答案 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";
<强>演示强>
答案 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";