- 締切済み
オラクル+SQL Plus
SELECT A FROM AAA WHERE ROWNUM<=5とSQLを実行すると 必ず5つ返ってくるとは限らないみたいで… テーブル名やフィールド名が分かっている状態で 何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 個数さえ合っていれば順番は特に気にしません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- muyoshid
- ベストアンサー率72% (230/318)
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)
ご質問の例では行数さえあれば、5行出ると思いますが。 例えば、その後ろに更にWHERE文がANDされているとかないですか。 もしそうなら、このままではだめみたいです。 >何万件ものデータベースから指定した個数だけ返ってくるような SQL文があるのであれば教えてください。 この文章から考えると、条件検索してその条件に合致したものから先頭5件を 取り出すということのようですね。 その場合は、合致したもの(副照会)をソート(ORDER BY)して ROWNUMを振りなおし、改めて主照会で先頭の5個を取り出します。 参考URLの ROWNUMの使い方について を参照ください。 selectの仕方【質問者・scotteさん】[初心者の部屋#12897]