- PR -

SQLの件数指定について

投稿者投稿内容
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-12-09 14:47
お世話になります。

SQLで件数指定を行う方法を探していたら、下記のページを見つけました。

http://www.thinkit.co.jp/free/marugoto/2/1/22/1.html

そのページによれば、PostgreSQLの「OFFSET + LIMIT」と等価の機能を
Oracleの「LINE BETWEEN」に変換できるという説明がされていました。

そこで分からないのがOracleの「LINE BETWEEN」の使い方です。

「LINE BETWEEN」の使い方をご存知の方おられましたら
ご教授お願いできれば幸いです。

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

以上
ZingBay
常連さん
会議室デビュー日: 2004/02/16
投稿数: 27
お住まい・勤務地: 古の奈良
投稿日時: 2005-12-09 15:21
こんにちは。

LINE BETWEEN・・・

対象とするORACLEのバージョンが判らないですが
少なくとも10Gではそのような指定はできないです。

ORACLEの予約語集にも記載が無いですし、SQLリファレンスにも記載がありません。
また、10G以外でも、そのような指定が出来た記憶はありません。

いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2005-12-09 15:53
いつもお世話になります。いのきです。
引用:

hohoさんの書き込み (2005-12-09 14:47) より:

Oracleの「LINE BETWEEN」に変換できるという説明がされていました。




私も「LINE BETWEEN」は聞いたことはありませんが、件数指定なら「ROWNUM BETWEEN」が使えるのではないでしょうか?
例)
SELECT * FROM A WHERE ROWNUM BETWEEN 0 AND 3;
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2005-12-09 15:58
LINE BETWEENは聞いたことないですね

そのサイトのこのSQL文
文法エラーになりますね

Oracleのアウタージョインの構文

SELECT B.商品名, SUM(A.数量)
FROM 売上データA, 商品マスタB
WHERE A.商品ID (+)= B.商品ID
GROUP BY B.商品名;

空白がない・・・・
いのき
ベテラン
会議室デビュー日: 2005/10/06
投稿数: 88
投稿日時: 2005-12-09 16:41
いつもお世話になります。いのきです。

引用:

いのきさんの書き込み (2005-12-09 15:53) より:
例)
SELECT * FROM A WHERE ROWNUM BETWEEN 0 AND 3;


1点言うの忘れましたが、上記の例では「最初の1件目からXXX件目を取得」の場合、有効です。
例えば、「3件目から5件目を取得」したい場合は、

SELECT
 *
FROM
 (
  SELECT
    A.*
   , ROWNUM AS RN
  FROM
   A
 )
WHERE
 RN BETWEEN 3 AND 5;

が使えると思います。
oki
ベテラン
会議室デビュー日: 2004/12/18
投稿数: 55
投稿日時: 2005-12-09 20:17
「LINE BETWEEN」はガセネタなのでしょうか...?
宣伝中止!
大ベテラン
会議室デビュー日: 2005/08/30
投稿数: 155
お住まい・勤務地: 東京に作業場所変更・・・
投稿日時: 2005-12-09 21:18
引用:

hohoさんの書き込み (2005-12-09 20:17) より:
「LINE BETWEEN」はガセネタなのでしょうか...?



http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-489965&bbsid=1&no=71702&view=9

ここの例でLINE BETWEENってありますが・・・

#Oracle9i?かな?
_________________
#「やらない」と「出来ない」を混同してはならない
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2005-12-09 22:35
引用:

宣伝中止!さんの書き込み (2005-12-09 21:18) より:

http://otn.oracle.co.jp/cgi-bin/non/msgview_r.cgi?communityid=otn-489965&bbsid=1&no=71702&view=9

ここの例でLINE BETWEENってありますが・・・




いえ、そこは単に「user_source」テーブルの「line」カラムを between 句で範囲指定しているだけです。

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