アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

ymmasayan さんのおっしゃるように上記のSQL であれば、元表に5行以上あれば


5レコード出力されるはずです。
もしも、ROWNUM の指定と出力される件数が合わないようであれば、
Oracle のBug の可能性が高いです。
このようなパターンでは、Optimizer の問題の可能性が高いですが、
Cost Base/Rule Base のどちらを使用されていますか?

可能であれば (Oracle とサポート契約を締結していれば) OISC から
Oracle に問い合わせをするのが、一番確実です。

参考URL:http://support.oracle.co.jp/
    • good
    • 0

ご質問の例では行数さえあれば、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
    • good
    • 0

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