簡體   English   中英

MySQLi查詢中的LIMIT問題

[英]LIMIT issue in MySQLi Query

我有三個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缺少結果。

為什么會發生這種情況,我該如何糾正?

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

限制中的第二個參數討論所需行的大小,因此在您的情況下,由於需要700個數據塊,因此逗號后面的第二個部分始終為700。

所以你的查詢就像

LIMIT 0,700";   //for api 1

LIMIT 700,700"; //for api 2

LIMIT 1400,700"; //for api 3

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM