• 締切済み

指定した行から指定した行数文データを取得したい

WEB上で、1ページ10行のデータを表示したいので、 10行ずつデータを取得できるSQLを書きたいと思うのですが、方法が分かりません。 参考書に 41行目から50行目を取得する方法として SELECT TOP 10 A,B FROM MyTable WHERE keyID Not IN (SELECT TOP 40 keyID FROM myTable) とかかれていました。 この場合、データが keyID,A,B 1,A1,B1 2,A2,B2 ・ ・ ・ 40,A*,B* 41,A*,B* ・ ・ とkeyIDが重複しない時ですよね。 主キーが複数あるときはどのようなSQL文にすればいいのでしょうか?

みんなの回答

回答No.1

これで大丈夫だと思います。ちょっと複雑ですが。 SELECT MT1.A, MT1.B FROM MyTable MT1 INNER JOIN ( SELECT TOP 50 A AS A1, B AS B1 FROM MyTable ORDER BY A, B ) AS MT2 ON MT2.A1 = MT1.A AND MT2.B1 = MT1.B LEFT JOIN ( SELECT TOP 40 A AS A2, B AS B2 FROM MyTable ORDER BY A, B ) AS MT3 ON MT3.A2 = MT1.A AND MT3.B2 = MT1.B WHERE MT3.A2 IS NULL 空行は、意味がありませんので、実際に使用する際は削ってください。 余談ですが、パフォーマンスも参考書のサンプルより上だと思います :-)

関連するQ&A