• ベストアンサー

データ表示順序

SQLを使用したデータの表示順序に関する質問です。 Order by 句を指定して表示をさせているのですが、 指定したOrder by 句の項目が全て同一な場合、 どういった順序で表示されるのでしょうか? 基本的には、 データをINSERTした時のINSERT順と考えていますが、 OracleのROWNUM等の絡みで必ずしもINSERT順ではないのですよね・・?? どなたかご存知でしたら教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ROWIDとは。。。 【行の識別子。ブロック番号やファイル番号などの情報を持ち、行を一意に識別する。】 こういうものです。 SELECT結果をUPDATEやINSERTする際にROWIDを指定すると、効率良く処理ができる、という使い方をします。 ROWIDを任意の値で更新することはできません。 ROWIDでORDER BYしても、INSERT順に表示はできないと思います。 できたとしても偶然で、いずれ順番が崩れるでしょう。 INSERT時にDATE型で日付を格納して、それをORDER BYするとか、 NUMBER型で連番を格納するとかしないとおそらくできないかと。

NaNa777777
質問者

お礼

ありがとうございました。 その後の調査で、オプティマイザによってINDEX順にソートされるケースもあることがわかりました。 項目に日付やシーケンスNO等を作成するしかないみたいですね・・・。 お忙しい中、本当にありがとうございました。

その他の回答 (1)

回答No.1

 ROWNUMは抽出後、ORDER BYの前に割りあてられます。  INSERT順に見えるのはたまたまです。使用するインデックスの種類に依存します。  「不定」というのが正しい答え。どうしても順位を付けたいなら、ROWID(だったかな?ROWNUMではなく、内部的に行を一意にするものがあります)が使えます。

NaNa777777
質問者

お礼

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

関連するQ&A

専門家に質問してみよう