MySQLでOFFSETでLIMITを使用すると、どの行が返されますか?


140

以下のクエリでは:

SELECT column 
FROM table
LIMIT 18 OFFSET 8

いくつの結果を出力として、どこからどこへと取得しますか?


順序は最初にLIMIT、次にオフセットである必要があります。そうでない場合は、エラーがスローされます。
Mouser 2015年

回答:


189

レコード#9から始まり、レコード#26で終わる18件の結果が返されます。

からクエリを読み取ることから始めます offset。最初に8だけオフセットします。つまり、クエリの最初の8つの結果をスキップします。次に、18で制限します。つまり、合計で18のレコードであるレコード9、10、11、12、13、14、15、16 .... 24、25、26を考慮します。

これをチェックてください。

また、公式ドキュメント


uは正しい、b / wの制限値8、18と制限値18のオフセット8があるか
Arun Killu

26
いいえ、同じです。LIMIT 8, 18ただのショートカットです:)
モスティモスタチョ

1
私も混乱していたので、2桁の間のデータを返すと思っていましたが、今は明確です:)
MR_AMDEV

47

OFFSET テーブルの開始カーソルを示すキーワードにすぎません

SELECT column FROM table LIMIT 18 OFFSET 8 -- fetch 18 records, begin with record 9 (OFFSET 8)

同じ結果フォームが得られます

SELECT column FROM table LIMIT 8, 18

視覚的表現(Rテーブル内の1つのレコードをある順序で)

 OFFSET        LIMIT          rest of the table
 __||__   _______||_______   __||__
/      \ /                \ /
RRRRRRRR RRRRRRRRRRRRRRRRRR RRRR...
         \________________/
                 ||
             your result

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.