dポイントプレゼントキャンペーン実施中!

SQLを使用したデータの表示順序に関する質問です。

Order by 句を指定して表示をさせているのですが、
指定したOrder by 句の項目が全て同一な場合、
どういった順序で表示されるのでしょうか?

基本的には、
データをINSERTした時のINSERT順と考えていますが、
OracleのROWNUM等の絡みで必ずしもINSERT順ではないのですよね・・??

どなたかご存知でしたら教えてください。

A 回答 (2件)

ROWIDとは。

。。

【行の識別子。ブロック番号やファイル番号などの情報を持ち、行を一意に識別する。】


こういうものです。

SELECT結果をUPDATEやINSERTする際にROWIDを指定すると、効率良く処理ができる、という使い方をします。
ROWIDを任意の値で更新することはできません。

ROWIDでORDER BYしても、INSERT順に表示はできないと思います。
できたとしても偶然で、いずれ順番が崩れるでしょう。

INSERT時にDATE型で日付を格納して、それをORDER BYするとか、
NUMBER型で連番を格納するとかしないとおそらくできないかと。
    • good
    • 0
この回答へのお礼

ありがとうございました。

その後の調査で、オプティマイザによってINDEX順にソートされるケースもあることがわかりました。

項目に日付やシーケンスNO等を作成するしかないみたいですね・・・。

お忙しい中、本当にありがとうございました。

お礼日時:2004/08/11 18:44

 ROWNUMは抽出後、ORDER BYの前に割りあてられます。



 INSERT順に見えるのはたまたまです。使用するインデックスの種類に依存します。


 「不定」というのが正しい答え。どうしても順位を付けたいなら、ROWID(だったかな?ROWNUMではなく、内部的に行を一意にするものがあります)が使えます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

質問した後すぐ、「ROWNUM」ではなく「ROWID」のことに気づきました・・・
INSERTする時に「ROWID」を指定することは不可能なのでしょうか??

お礼日時:2004/08/11 17:39

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