- ベストアンサー
データ表示順序
SQLを使用したデータの表示順序に関する質問です。 Order by 句を指定して表示をさせているのですが、 指定したOrder by 句の項目が全て同一な場合、 どういった順序で表示されるのでしょうか? 基本的には、 データをINSERTした時のINSERT順と考えていますが、 OracleのROWNUM等の絡みで必ずしもINSERT順ではないのですよね・・?? どなたかご存知でしたら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ROWIDとは。。。 【行の識別子。ブロック番号やファイル番号などの情報を持ち、行を一意に識別する。】 こういうものです。 SELECT結果をUPDATEやINSERTする際にROWIDを指定すると、効率良く処理ができる、という使い方をします。 ROWIDを任意の値で更新することはできません。 ROWIDでORDER BYしても、INSERT順に表示はできないと思います。 できたとしても偶然で、いずれ順番が崩れるでしょう。 INSERT時にDATE型で日付を格納して、それをORDER BYするとか、 NUMBER型で連番を格納するとかしないとおそらくできないかと。
その他の回答 (1)
- はなおか じった(@Jitta)
- ベストアンサー率42% (69/161)
ROWNUMは抽出後、ORDER BYの前に割りあてられます。 INSERT順に見えるのはたまたまです。使用するインデックスの種類に依存します。 「不定」というのが正しい答え。どうしても順位を付けたいなら、ROWID(だったかな?ROWNUMではなく、内部的に行を一意にするものがあります)が使えます。
お礼
ありがとうございました。 質問した後すぐ、「ROWNUM」ではなく「ROWID」のことに気づきました・・・ INSERTする時に「ROWID」を指定することは不可能なのでしょうか??
お礼
ありがとうございました。 その後の調査で、オプティマイザによってINDEX順にソートされるケースもあることがわかりました。 項目に日付やシーケンスNO等を作成するしかないみたいですね・・・。 お忙しい中、本当にありがとうございました。