17

MySQL で、テーブル内の行 X からすべての行を取得するにはどうすればよいですか? たとえば、行 6 から開始します。

LIMIT 5,0

これは何も返さないので、これを試しました:

LIMIT 5,ALL

まだ結果がありません (SQL エラー)。

特定の行から始まるすべての行を取得するだけで、ページネーション機能を探しているわけではありません。LIMIT 5,2000私にはやり過ぎのようです。どういうわけか、Google は私にいくつかの答えを得ていないようです。お役に立てれば幸いです。

ありがとう

4

5 に答える 5

36

ドキュメントによると:

特定のオフセットから結果セットの最後までのすべての行を取得するには、2 番目のパラメーターに大きな数値を使用できます。次のステートメントは、96 行目から最後の行までのすべての行を取得します。

SELECT * FROM tbl LIMIT 95, 18446744073709551615;

これは、MyISAM テーブルが保持できる最大行、2^64-1 です。

MyISAM テーブルには 2^32 (~4.295E+09) 行の制限があります。--with-big-tables オプションを使用して MySQL をビルドすると、行の制限が (2^32)^2 (1.844E+19) 行に増えます。セクション2.16.2「一般的な構成オプション」を参照してください。Unix および Linux のバイナリ ディストリビューションは、このオプションでビルドされます。

于 2009-09-29T12:45:33.613 に答える
3

最後のx行を取得する場合、最も簡単な方法はSORT DESC最初のx行に制限することです。確かに、SORTはクエリの速度を低下させます。ただし、2番目の引数として任意の大きな数値を設定することに反対する場合はLIMIT、それがその方法です。

于 2009-09-29T12:47:08.210 に答える
0

select all by LIMIT の最大値を入力する必要はないと思います。テーブルの数を見つけて、それを最大 LIMIT として使用するだけで十分です。

于 2016-09-27T06:15:28.983 に答える
0

私が現在知っている唯一の解決策は、あなたが言うようにして、LIMITの2番目の引数として途方もなく大きな数を与えることです。低い数値を指定しても高い数値を指定しても、パフォーマンスに違いはないと思います。mysql は、結果セットの最後または制限に達すると、単に行を返すのを停止します。

于 2009-09-29T12:45:37.647 に答える
-1

次のクエリも機能するはずであり、私の意見ではより効果的です...

SELECT * FROM mytbl WHERE id != 1 ORDER BY id asc

クエリを並べ替えると、ID がすぐに見つかり、これをスキップするため、次の行で ID = 1 かどうかをチェックしなくなります。

于 2013-05-20T12:01:29.693 に答える