- - PR -
SQL文で件数を指定する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-09-14 18:39
SQLで降順指定、取得条件がついていて
「11件目から20件目まで」とか、「11件目から10件分」というふうに 取得するような方法はありますか? (statusが1のものだけを取得) テーブルの構成は no name status ---------------- 1 xxx 1 2 ddd 1 3 sss 2 4 aaa 1 データベースはSQLServer2000です。 よろしくお願いいたします。 |
|
投稿日時: 2005-09-14 19:00
思いつき&うろ覚えで申し訳ないですが...
確かSQL ServerはTOP句で上位何件取得するかを指定できたと思うので、 「11件目から20件目まで」てことは「1件目から20件目まで」と「1件目から10件目」の 差集合をとればよいのではと思いますがいかがでしょうか。 #SQLServerでは集合演算子のMINUSは使えなかったような #となると NOT EXISTS を使うことになるのかな _________________ # Future Is On Fire ! |
|
投稿日時: 2005-09-14 22:46
お疲れ様です。
インデックスに任せて取りたい行からとる [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/ |
|
投稿日時: 2005-09-14 23:14
where status = 1 and no > 10 order by no asc limit 10;
|
|
投稿日時: 2005-09-15 11:07
where (順位も求めるサブクエリ) between 11 and 20
とすればできると思います OracleSQLパズル http://oraclesqlpuzzle.hp.infoseek.co.jp/3-5.html |
1