こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

デフォルトでデータが表示される順番

質問があります。
oracle初心者です。

oracle8.1で
insert文によってデータを登録すると
一番最後のレコードに表示されません。
select文(select * from "テーブル名")を
書いて全レコードを抽出すると、中途半端な位置に
最新レコードが表示されます。

デフォルトでテーブルのデータが表示される位置に
決まりというのはあるのでしょうか

MYSQLでは最後の行に最新レコードが表示されるはずですが、
オラクルでは違うのでしょうか。

もちろん、文字コード順や数値の順番ではないみたいです。
困っていますご回答よろしくお願いします。

投稿日時 - 2007-02-28 17:37:09

QNo.2791524

すぐに回答ほしいです

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

>デフォルトでテーブルのデータが表示される位置に
>決まりというのはあるのでしょうか
無いです。
どのバージョンでもそうですが、順序を意識したselect分をしたいのなら、必ずorder by句でソート順の指定をしてください。
#アクセスパスによっても出力順が変わったりしますので。

投稿日時 - 2007-02-28 21:39:38

お礼

急いでたので本当に助かりました。
ありがとうございました。

投稿日時 - 2007-03-01 08:16:54

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

殆どのRDBMSでは、「order by」を指定しない限り、検索順序の保証はされていません。

>MYSQLでは最後の行に最新レコードが表示されるはず

MySQLも、そんな保証はしていませんけど?
MySQLのマニュアルにも、「order byなしでは順序保証しない」ことが明記されていますよ?

例外的にSQL Serverでは、「primary key」指定時に、「order by」なしでも順序保証しているようですけどね。

投稿日時 - 2007-03-01 02:06:54

お礼

>MySQLも、そんな保証はしていませんけど?

そうだったんですか!
初めて知りました。

本当に勉強になりました
ありがとうございました。

投稿日時 - 2007-03-01 08:15:34

>デフォルトでテーブルのデータが表示される位置に
>決まりというのはあるのでしょうか

ORDER指定をしない以上は、表示の順番はどうでも良いという意味になりますので、オラクルの都合で表示します。
オラクルにとって都合が良いのは検索順に出すことですが、検索順はオプティマイザが検索方法を考えるので、
状況次第で変わることになります。

投稿日時 - 2007-03-01 00:58:06

お礼

急いでたので助かりました。
ありがとうございました。

大変参考になったので、k_o_r_o_c_h_a_nさんにも
ポイント差し上げたいのですが
最初に回答していただいた方に差し上げることにします。
ごめんなさい。

投稿日時 - 2007-03-01 08:19:39

あなたにオススメの質問