▲TOP ■投稿 ■過去ログ ■管理用 ■RSS ■RDF

[SQL]SELECT 取得数の制限

■MySQL
 MySQLの場合、SELECT文の中にLIMITという機能があります。
 以下の例では、先頭から100レコードを取得、31件目から10レコードを取得しています。
SELECT * FROM テーブル名 LIMIT 100;
SELECT * FROM テーブル名 LIMIT 30,10;


■Oracle
 Oracleの場合、各レコードに自動的に振られている行番号(ROWNUM)を利用します。
 ソートが含まれる場合、行番号はソート前に振られるため、行番号がバラバラになります。その場合はROW_NUMBER()関数を使用するか、ソートした後に再度SELECTして行番号を取得します。
SELECT * FROM テーブル名 WHERE ROWNUM <= 100;
SELECT * FROM テーブル名 WHERE ROWNUM BETWEEN 30 AND 40;


■SQLServer
 SQLServerの場合、SELECT文で先頭からの取得数を制限することは可能です。
 途中のレコードのみを取り出す機能はないので、�@ソートしておく、�A途中以降のレコードをWHERE条件で取得する、�BTOPで取得する数を制限する、ということになります。
 画面表示用のストアドを組む方が楽かもしれません。あとは各レコードに連番を振っておくとか…。
SELECT TOP 100 * FROM テーブル名;