[SQL]SELECT 取得数の制限
■MySQL
MySQLの場合、SELECT文の中にLIMITという機能があります。
以下の例では、先頭から100レコードを取得、31件目から10レコードを取得しています。
■Oracle
Oracleの場合、各レコードに自動的に振られている行番号(ROWNUM)を利用します。
ソートが含まれる場合、行番号はソート前に振られるため、行番号がバラバラになります。その場合はROW_NUMBER()関数を使用するか、ソートした後に再度SELECTして行番号を取得します。
■SQLServer
SQLServerの場合、SELECT文で先頭からの取得数を制限することは可能です。
途中のレコードのみを取り出す機能はないので、@ソートしておく、A途中以降のレコードをWHERE条件で取得する、BTOPで取得する数を制限する、ということになります。
画面表示用のストアドを組む方が楽かもしれません。あとは各レコードに連番を振っておくとか…。
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 テーブル名;