- PR -

SQLのSELECTで●番目〜◆番目までを取得

1
投稿者投稿内容
のの
ベテラン
会議室デビュー日: 2004/11/10
投稿数: 88
投稿日時: 2006-06-27 08:41

お世話になります。
SQLで、”●番目〜◆番目までを取得”ということはできるのでしょうか?

SELECTする件数が多いので、できるだけレスポンスをあげたいのです。

もし、直接こういった命令がなかったとして、皆様は、こういった場合、
どのような技術で代用してているのでしょうか?こういったケースが必要となるのは多々あるような気がしましたので。

SQLServer2000です。

よろしくお願い致します。



burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-06-27 10:01
プログラミングと開発者のためのCodeZine:SQL Server 2000で大量の結果セットを効率的にページングする方法(SQL, ページング, DataGrid, GridView)
http://codezine.jp/a/article.aspx?aid=391
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-06-27 10:09
N件ごとに取得して処理したいって場合になりますが、
私の場合は、Topで取得行数を制限し、
最終行のキー項目の値を保持しておきます。

その保持したキー値より大きい値を持つキーのデータを取得条件とし、
そこからTopでまた取得条件を取得する感じですね。

例として簡単に10件で書くと
初回に発行するSQLは
SELECT top 10 key FROM table order by key ;
とします。
そこで、最終行のkeyを取得し、
2回目以降は
SELECT top 10 key FROM table where key > 値 order by key ;
としますね。

ただ、このままだと「21〜31」行目を表示している時に
「11〜20」行目を表示したいって場合には対応しきれないので、
テーブル値関数をつくり、使う形にすると思います。
#テーブル値関数で行番号を付加して戻すだけのストアドを作成する。

ちなみにですが、
SQLServer2005でしたら、ROW_NUMBER関数が追加されたので、
それによりROW_NUMBERが返す値に対し、A以上B未満とかかけるようになりました。
_________________
夏椰 @ わんくま同盟
夏椰の庵
Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 )
1

スキルアップ/キャリアアップ(JOB@IT)