MySQL
リミットとオフセット
サーチ…
構文
- SELECT column_1 [、column_2]
FROM table_1
ORDER BY order_column
LIMIT row_count [OFFSET row_offset] - SELECT column_1 [、column_2]
FROM table_1
ORDER BY order_column
LIMIT [row_offset、] row_count
備考
「制限」は「テーブルの行の最大数」を意味します。
「オフセット」 row
番号からのピックを意味します(プライマリキー値またはフィールドデータ値と混同しないでください)
リミットとオフセットの関係
次のusers
テーブルを検討してください。
id | ユーザー名 |
---|---|
1 | ユーザー1 |
2 | User2 |
3 | ユーザー3 |
4 | ユーザー4 |
5 | User5 |
SELECT
問合せの結果セットの行数を制限するために、 LIMIT
句を1つまたは2つの正の整数とともに引数として使用できます(ゼロを含む)。
1つの引数を持つLIMIT
句
1つの引数を使用すると、結果セットは次のように指定された数に制限されます。
SELECT * FROM users ORDER BY id ASC LIMIT 2
id | ユーザー名 |
---|---|
1 | ユーザー1 |
2 | User2 |
引数の値が0
場合、結果セットは空になります。
また、表示される結果セットの最初の行を指定するためには、 ORDER BY
節が重要であることに注意してください(別の列で並べ替える場合)。
2つの引数を持つLIMIT
節
LIMIT
句で2つの引数を使用する場合は、次のようになります。
- 最初の引数は、結果セットの行が表示される行を表します。この数値は、制約のある結果セットの最初の行の前の行を表すため、 オフセットと呼ばれることがよくあります。これにより、引数は値として
0
を受け取ることができ、非制約付き結果セットの最初の行を考慮に入れることができます。 - 2番目の引数は結果セットに返される行の最大数を指定します(1つの引数の例と同様)。
したがって、クエリ:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
次の結果セットを示します。
id | ユーザー名 |
---|---|
3 | ユーザー3 |
4 | ユーザー4 |
5 | User5 |
offset引数が0
場合、結果セットは1つの引数LIMIT
句に相当することに注意してください。これは、次の2つのクエリを意味します。
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2
SELECT * FROM users ORDER BY id ASC LIMIT 2
同じ結果セットを生成する:
id | ユーザー名 |
---|---|
1 | ユーザー1 |
2 | User2 |
OFFSET
キーワード:代替構文
2つの引数を持つLIMIT
句の別の構文は、次のように最初の引数の後にOFFSET
キーワードを使用することです。
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
このクエリは、次の結果セットを返します。
id | ユーザー名 |
---|---|
3 | ユーザー3 |
4 | ユーザー4 |
この代替構文では、引数の位置が切り替えられていることに注意してください。
最初の引数は結果セットで返される行数を表します。
2番目の引数はオフセットを表します。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow