QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

SQL文で件数を指定する方法

SQLで降順指定、取得条件がついていて
「11件目から20件目まで」とか、「11件目から10件分」というふうに
取得するような方法はありますか?
(statusが1のものだけを取得)

テーブルの構成は
no name status
----------------
1 xxx 1
2 ddd 1
3 sss 2
4 aaa 1

データベースはSQLServer2000です。
よろしくお願いいたします。

質問者:ポーター

回答

思いつき&うろ覚えで申し訳ないですが...
確かSQL ServerはTOP句で上位何件取得するかを指定できたと思うので、
「11件目から20件目まで」てことは「1件目から20件目まで」と「1件目から10件目」の
差集合をとればよいのではと思いますがいかがでしょうか。

#SQLServerでは集合演算子のMINUSは使えなかったような
#となると NOT EXISTS を使うことになるのかな
_________________# Future Is On Fire !

投稿者:117

編集 履歴 (0)

お疲れ様です。

インデックスに任せて取りたい行からとる

[code]-----
SELECT TOP 10 [ID] FROM [TBLA]
  WHERE [ID] NOT IN(SELECT TOP 11110 [ID] FROM [TBLA])
[code]-----

くるくる回して10行とるとか
[code]-----
SELECT [B].[ID] FROM
  (SELECT TOP 10 [A].[ID] FROM
   (SELECT TOP 11120 [ID] FROM [TBLA]) AS [A] ORDER BY [A].[ID] DESC)
  AS [B] ORDER BY [B].[ID]
[code]-----

両方とも11111 行目から10 件とっています。

あとは Join するとか,
実行プランとにらめっこしながら効率のよい方法を探してください。

----------
TimberLandChapel
http://blogs.timberlandchapel.com/blogs/timberlandchapel/

投稿者:TLC

編集 履歴 (0)

where status = 1 and no > 10 order by no asc limit 10;

投稿者:コブラ

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。