2017-11-23 5 views
2

私は100,000以上の行を持つMySQLデータベースを持っているので、最後の1000行だけをフェッチするように検索する必要があるので、最後の1000行に見つからない場合はフェッチが終了します(見つからなくても)行が見つからなくても特定の行数を検索した後、MySQLフェッチを終了するにはどうしたらいいですか?

例:私のテーブルには、その

id name 
1  AL 
2  BL 
... 
1000 P12 
1001 P15 

のようなもので、私はこのようなフェッチない場合:

これを(私は最後の1000行を発明し使用するかわからないので)SELECT * FROM myTable WHERE name = 'AL' ONLY LAST 1000 ROWS ORDER BY id DESC指定された1001番目の行ではなく、最後の1000行にあった場合にのみ情報を取得するようにクエリを欲しかったので空を返します。

LIMITフィールドを使用すると、FOUND ROWSが見つからないときにLIMITフィールドが使用できなくなります。

これをMySQLで実装する方法はありますか? ありがとうございました!

+0

あなたはOFFSET・オフセット – ProEvilz

+0

から開始する行の数を必要とする '使用する必要があり、私はそれがどの行に知らなくても、最後のXの行を取得する必要があります。 – Grego

+0

しかし、最後の1000行が明示的に行99000から – ProEvilz

答えて

1

コメントで触れたとおり、あなたはSELECTレコードは、そのレコードのidよりid大きなで、その後、1000番目の最後のレコードのidを取得するためにOFFSETを使用することができます。このような

何か:

SELECT name 
FROM myTable 
WHERE id > (SELECT id FROM myTable ORDER BY id DESC LIMIT 1 OFFSET 1000) 
AND name = 'AL' 
関連する問題