2017-06-14 13 views
0

データベース呼び出しを行うたびに5行のチャンクを選択しようとしています。私のDBでPHP sql:行のチャンクを選択する

は、一部の列を削除し、他の人ではないので、ID列が欠落している番号のような「ギャップ」を、持つことができ、このようなものされている場合があります。

ID name  category .... 

33 xxxx  xxxxxxx 

34 xxxx  xxxxxxx 

38 xxxx  xxxxxxx 

40 xxxx  xxxxxxx 

41 xxxx  xxxxxxx 

45 xxxx  xxxxxxx 

49 xxxx  xxxxxxx 

... 

私のような何かをしようとベンを持っていますこの:

$query = "SELECT * FROM Products LIMIT 33, 5"; 

私はそれが次の次の33で始まる5行がかかりますクエリにLIMITを追加すると、しかし、それは動作していないようですが理解。

毎回特定のIDで始まる5行を取得するためのより良い提案はありますか?

+1

'id_field_name> $ id'はあなたが探しているドロイドかもしれません – ThisGuyHasTwoThumbs

+0

ちょっと@ThisGuyHasTwoThumbs、それは$ idで指定されたより大きい任意のIDを取る、それは大丈夫ですが、どうすれば5つの結果に制限できますか?各コールで – codeKiller

+0

を使用すると、限界オフセットはidと接続されません。それは行を扱っています。 ThisGuyHasTwoThumbsのような使用条件が提案されました。また、最後に選択したIDを保存し、各呼び出しで条件を変更します。使用制限を5行に制限する –

答えて

3

あなたが制限句のためのマニュアルを読めば、あなたはdefinintion表示されます。

LIMIT {[offset,] row_count ... 

は、だからあなたの場合にはLIMIT 33, 5SKIP 33 records and TAKE 5 following recordsを意味し、ないFIND RECORD WITH ID = 33 and TAKE 5 following records

だから、あなたのオプションは、WHERE句を使用することです:

SELECT * FROM Products WHERE ID > 33 ORDER BY ID ASC LIMIT 5 
+0

ありがとう@u_mulder、私はそれを試してみてください – codeKiller

0

LIMITキーワードの後に​​値がオフセットされており、完全なレコードセットからの行数を返すように。それらはIDやクエリによって返される他の値ではありません。

については、SELECT statementを参照してください。

あなたは、あなたのクエリがある5行がID 33を有するもので始まる取得したい場合:LIMIT 5なし

SELECT * 
FROM Products 
WHERE ID >= 33 
ORDER BY ID 
LIMIT 5 

、上記のクエリは、ソート、33持つ以上IDを持つすべての行を返します。昇順に並べ替えられます(ID)。 LIMIT 5節(LIMIT 0, 5の略)は、リストから最初の5行だけを返すようにMySQLに指示します。