OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ユニークなナンバーのデータの抜き出し(SQL)

  • すぐに回答を!
  • 質問No.157285
  • 閲覧数881
  • ありがとう数6
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 72% (161/221)

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

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

1 赤
3 黄
12 青
7 緑


100 黒
105 白

100件を抜き出すSQLは、どのようにして考えたら良いでしょうか?
実際にSQLを教えて頂けたら、助かります。
よろしくお願い致します。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル10

ベストアンサー率 42% (53/126)

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

set rowcount 100
select ほにゃらら

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

set rowcount 0

を忘れないよう実行してください。
お礼コメント
mkim

お礼率 72% (161/221)

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

set rowcountを使用すると、ビシッと成功しました。
接続レベルで設定が維持される事をわきまえて、
使いたいと思います。
ありがとうございました。
投稿日時 - 2001-10-26 14:41:40
-PR-
-PR-

その他の回答 (全5件)

  • 回答No.1
レベル11

ベストアンサー率 38% (141/363)

select * from table_name order by number LIMIT 0 OFFSET 100 ...続きを読む
select * from table_name order by number LIMIT 0 OFFSET 100
お礼コメント
mkim

お礼率 72% (161/221)

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

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

sybaseでも、使用できる形で何かあれば、アドバイスよろしくお願い致します。
投稿日時 - 2001-10-25 16:19:51


  • 回答No.2
レベル10

ベストアンサー率 31% (47/149)

>データは、以下のようになっています。 >1 赤 >3 黄 >12 青 >7 緑 ・ ・ >100 黒 >105 白 フィールド構成が分かりません。 idと色は同じフィールドですか? テーブル定義はどうなっているのですか? あと、 >とりあえず、上から100件抜き出したいのです。 DBに上からという ...続きを読む
>データは、以下のようになっています。

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


>100 黒
>105 白

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

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

お礼率 72% (161/221)

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

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

こんな感じの事が、したいのです^^
ちなみに、DBには、sybaseを使用しています。
ですので、oracle固有のものが使えなくて、困っています。
よろしくお願いします。
投稿日時 - 2001-10-25 16:10:53
  • 回答No.3
レベル13

ベストアンサー率 40% (404/988)

こんにちは。 多分、ナンバーは、ユニークでかつ連続番号ではないのですね。 データのテーブルを 「データ」として、ここに、「ナンバー」「カラー」のカラムがあるということで、よろしいでしょうか。 まず、順位をつけて、その順位に制限をかけてみましょうか。 |select a.順位,a.ナンバー,a.カラー |from( |  select( |    select count( ...続きを読む
こんにちは。

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

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

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


|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で、実際走らせていないので・・・・。(この辺が”自信なし”)
構文エラーとか、そん時は、ゴメンナサイ。
何かあったら補足ください。
でわでわ
お礼コメント
mkim

お礼率 72% (161/221)

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

set rowcount 100と言う指定でできました。
こちらも、色々な考え方があると思い、勉強になりました。
ありがとうございました。
投稿日時 - 2001-10-26 14:37:46
  • 回答No.4
レベル11

ベストアンサー率 34% (97/285)

>オラクルで言う所の疑似列を想定して100件抜き出した >いなぁ~って思いました。 >SELECT * FROM table_name WHERE ROWNUM <= 100 >ORDER BY id sybase使ったこと無いんですが、sybaseでしたらtopですかね。 select top 100 * from table_name orde ...続きを読む
>オラクルで言う所の疑似列を想定して100件抜き出した
>いなぁ~って思いました。
>SELECT * FROM table_name WHERE ROWNUM <= 100
>ORDER BY id

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

select top 100 *
from table_name
order by id
お礼コメント
mkim

お礼率 72% (161/221)

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

sybaseでは、topを指定すると、エラーでちゃいました^^;;
どうやら、だめみたいです。
アドバイスして頂いた気持ちが嬉しかったです。
ありがとうございました。
投稿日時 - 2001-10-26 14:40:15
  • 回答No.6
レベル8

ベストアンサー率 33% (18/53)

Oracle8iでは 8iからの機能でROWNOができました。  select * from TABLE where ROWNO<101 で、とにかく100件でてきます。 sybaseはどうでしょうか? ...続きを読む
Oracle8iでは 8iからの機能でROWNOができました。

 select * from TABLE where ROWNO<101

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

sybaseはどうでしょうか?
お礼コメント
mkim

お礼率 72% (161/221)

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

sybaseでは、「set rowcount」の指定を行う事で
成功致しました。
しかし、オラクル用やら、sybase用やら、統一して欲しい
ですね(愚痴になってしまいますが。)
これから、勉強する方は、大変ですぅ。
がんばりたいと思います。
ありがとうございました。
投稿日時 - 2001-10-26 14:44:34
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ