プロが教えるわが家の防犯対策術!

すいません。
うまくいかないので、質問させていただきます。

ユニークなナンバーの振られたデータを100件だけ抜き出したい。
また、ナンバーの若い順にならんでるとは、限りません。
とりあえず、上から100件抜き出したいのです。
データは、以下のようになっています。

1 赤
3 黄
12 青
7 緑


100 黒
105 白

100件を抜き出すSQLは、どのようにして考えたら良いでしょうか?
実際にSQLを教えて頂けたら、助かります。
よろしくお願い致します。

A 回答 (6件)

結果の行数を100件に抑制したいということなら、



set rowcount 100
select ほにゃらら

とすれば100件だけの結果を取り出せます。set は接続レベルで
設定が持続するので、次のクエリを実行する前に

set rowcount 0

を忘れないよう実行してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

set rowcountを使用すると、ビシッと成功しました。
接続レベルで設定が維持される事をわきまえて、
使いたいと思います。
ありがとうございました。

お礼日時:2001/10/26 14:41

Oracle8iでは 8iからの機能でROWNOができました。



 select * from TABLE where ROWNO<101

で、とにかく100件でてきます。

sybaseはどうでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

sybaseでは、「set rowcount」の指定を行う事で
成功致しました。
しかし、オラクル用やら、sybase用やら、統一して欲しい
ですね(愚痴になってしまいますが。)
これから、勉強する方は、大変ですぅ。
がんばりたいと思います。
ありがとうございました。

お礼日時:2001/10/26 14:44

>オラクルで言う所の疑似列を想定して100件抜き出した


>いなぁ~って思いました。
>SELECT * FROM table_name WHERE ROWNUM <= 100
>ORDER BY id

sybase使ったこと無いんですが、sybaseでしたらtopですかね。

select top 100 *
from table_name
order by id
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

sybaseでは、topを指定すると、エラーでちゃいました^^;;
どうやら、だめみたいです。
アドバイスして頂いた気持ちが嬉しかったです。
ありがとうございました。

お礼日時:2001/10/26 14:40

こんにちは。



多分、ナンバーは、ユニークでかつ連続番号ではないのですね。

データのテーブルを 「データ」として、ここに、「ナンバー」「カラー」のカラムがあるということで、よろしいでしょうか。

まず、順位をつけて、その順位に制限をかけてみましょうか。


|select a.順位,a.ナンバー,a.カラー
|from(
|  select(
|    select count(*)+1
|    from データ
|    where データ.カラー < s.カラー) 順位 , s.ナンバー, s.カラー
|  from データ s))a
|where 順位<=100
|oeder by 順位


つまり、データをデータ(S)と比較し、自分より小さい数をカウントしたものを+1したものが順位です。それをfrom句にいれて、サブクエリとしています。

こんな感じですか。
あ~~DBで、実際走らせていないので・・・・。(この辺が”自信なし”)
構文エラーとか、そん時は、ゴメンナサイ。
何かあったら補足ください。
でわでわ
    • good
    • 0
この回答へのお礼

ご回答ありがとございます。

set rowcount 100と言う指定でできました。
こちらも、色々な考え方があると思い、勉強になりました。
ありがとうございました。

お礼日時:2001/10/26 14:37

>データは、以下のようになっています。



>1 赤
>3 黄
>12 青
>7 緑


>100 黒
>105 白

フィールド構成が分かりません。
idと色は同じフィールドですか?
テーブル定義はどうなっているのですか?

あと、
>とりあえず、上から100件抜き出したいのです。
DBに上からという概念はありませんよ。降順とか昇順とかで並び替えは
できますが。

この回答への補足

すいません。質問の仕方が下手でした^^;;

idと色は、別のフィールドです。
オラクルで言う所の疑似列を想定して100件抜き出したいなぁ~って思いました。
SELECT * FROM table_name WHERE ROWNUM <= 100 ORDER BY id

こんな感じの事が、したいのです^^
ちなみに、DBには、sybaseを使用しています。
ですので、oracle固有のものが使えなくて、困っています。
よろしくお願いします。

補足日時:2001/10/25 16:10
    • good
    • 0

select * from table_name order by number LIMIT 0 OFFSET 100

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

質問時に書き忘れていたのですが、DBにsybaseを使用しています。
LIMITか、OFFSETが、Oracle固有のものみたいで、失敗しました^^;;

sybaseでも、使用できる形で何かあれば、アドバイスよろしくお願い致します。

お礼日時:2001/10/25 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す