プロが教える店舗&オフィスのセキュリティ対策術

PL/SQLのカーソル定義にて困っています。

SELECT文のORDER BYでソートをかけますが、
例として、引数を2つ与えとします。
2つの値が同値であった場合、次にソートの条件となるのは何なのでしょうか?
GROUP BY,WHERE句等はありません。

初歩的な質問過ぎて逆に中々見つけられませんでした。
どなたかご存知の方、教えて頂けますでしょうか。
よろしくお願いします。

A 回答 (3件)

その並び替えは決定的なソートにはならないでしょう



以下の URL を参考にしてください。
http://biz.rivus.jp/technote507029.html

参考URL:http://biz.rivus.jp/technote507029.html
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考URL拝見しました。

>並び替えにおいて列の値が同じ値の場合、その順番は>常に決定的とはいえず変動することがある。 (ROWID
>順になるということも保証されない。決定的にするた
>めには ROWID を ORDER BY に記述すると良いだろう)
>これは、実行計画の差異やパラレルクエリのコーディ
>ネータなどの要因によって順番が変動するためであ
>る。また、特定の環境や SQL にて ORDER BY 句なし
>に並び替えられて取り出されることがある。これは
>Oracle(オプティマイザ) が効率的にデータ処理する
>ために、その処理プロセスで並び替え処理があるだけ
>で、これを取り出し結果の並び替えに代用するような
>ことはしてはならない。

なるほど。
カーソル(ORDER句付き)→別TBLにINSERT
で出力したTBLからカーソルのORDER句と同じ内容で出力してみたら、出てきた順序が違ったので「?」となってしまいました。
ありがとうございました。

お礼日時:2006/02/17 15:12

ソート条件が不十分な場合、ソートは検索された順で表示されます。


新しい空間に作られた場合は、データの作成順かな。
    • good
    • 0

テーブルA_TBLで


AAA,
BBB,
CCC,
DDD の項目があった場合に

select AAA,BBB,CCC,DDD
 from A_TBL
order by AAA,BBB;

の場合において AAA=BBBの場合は、
「CCCの項目の昇順で並べ替えがされます」
(1)必要な並べ替えがなされている場合においては並べ替えがキーに及んでいる場合(AAA,BBB,CCCがキー)ORDERで指定した以外のキー項目で昇順。
(2)キー以外がOrder項目の場合は、最初のキー項目で昇順。
(3)CCCがキー指定でない場合はキー以外の最初の項目で昇順。

になります。
    • good
    • 0
この回答へのお礼

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

この場合(AAA,BBB,CCCがキー)という事は、
ORDER句の次はキー項目が優先されて、
昇順になるという解釈でよろしいでしょうか?

読解力不足でしたら、もうしわけありませn。

お礼日時:2006/02/17 15:05

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