• 締切済み

オラクル+SQL Plus

SELECT A FROM AAA WHERE ROWNUM<=5とSQLを実行すると 必ず5つ返ってくるとは限らないみたいで… テーブル名やフィールド名が分かっている状態で 何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 個数さえ合っていれば順番は特に気にしません。 よろしくお願いします。

みんなの回答

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

ymmasayan さんのおっしゃるように上記のSQL であれば、元表に5行以上あれば 5レコード出力されるはずです。 もしも、ROWNUM の指定と出力される件数が合わないようであれば、 Oracle のBug の可能性が高いです。 このようなパターンでは、Optimizer の問題の可能性が高いですが、 Cost Base/Rule Base のどちらを使用されていますか? 可能であれば (Oracle とサポート契約を締結していれば) OISC から Oracle に問い合わせをするのが、一番確実です。

参考URL:
http://support.oracle.co.jp/
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

ご質問の例では行数さえあれば、5行出ると思いますが。 例えば、その後ろに更にWHERE文がANDされているとかないですか。 もしそうなら、このままではだめみたいです。 >何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 この文章から考えると、条件検索してその条件に合致したものから先頭5件を 取り出すということのようですね。 その場合は、合致したもの(副照会)をソート(ORDER BY)して ROWNUMを振りなおし、改めて主照会で先頭の5個を取り出します。 参考URLの ROWNUMの使い方について を参照ください。 selectの仕方【質問者・scotteさん】[初心者の部屋#12897]

参考URL:
http://www.oracle.co.jp/2shin/ora55/18_19.html