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 テーブル名;