• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Selectした時のレコードの取得順)

SQL Server2005でのSelectした時のレコードの取得順について

このQ&Aのポイント
  • SQL Server2005でデータの取得順を理解するためには、ORDER BY句の動作を把握する必要があります。ORDER BY句は、指定したカラムや式に基づいてレコードを並び替えるためのものです。同じ値を持つ複数のレコードが存在する場合、その順番は保証されません。
  • 例えば、SELECT文にORDER BY句を含めずにレコードを取得する場合、レコードの並び順はデータが格納された順序に依存します。つまり、INSERT文の実行順や物理的なディスク上の配置によってレコードの取得順が決まります。
  • 一方、ORDER BY句を使用してレコードを並び替える場合、指定したカラムに基づいてレコードがソートされます。同じ値を持つカラムが複数ある場合は、その次に指定したカラムでソートされます。また、同じ値を持つ場合には保証された順序でレコードが取得されます。

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

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.2

>特に指定していなくても、No(PK)の順になるのかと思っていました。 下記のリンクに「ORDER BY 句が指定されていない限り、結果セットとして返される行の順序は保証されません。」と書いてあるので実際、保証されていないのだと思います。 http://msdn.microsoft.com/ja-jp/library/ms188385.aspx で、実際にどういう順番で返ってくるのかはインデックスの種類(クラスタかどうかなど)や設定状況によって変わってくるのでケースバイケースだと思います。

hi3-5-0
質問者

お礼

ありがとうございます。 リンク先の↓を見て、すっきりしました。 「ORDER BY 句が指定されていない限り、結果セットとして返される行の順序は保証されません。」

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

ソートアルゴリズムを勉強すれば分かりますが、ほとんどのソートアルゴリズムはキーで指定された以外のデータ順については保障がありません。(安定的なソートではない)。 また、RDBMSが仮に安定的なソートアルゴリズムであっても、どのような順序にデータをフェッチするかはRDBMSの実装に依存しています。 > この、順番は何で決まっているのでしょうか? きまりはないと思ってください。

hi3-5-0
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

SQL Serverのローカルルールはよくわかりませんが たいていのSQLではORDER BYで明示されていない場合は 表示順序は保障されない(つまり何順かわからない) というのが原則だと思います どうしても確定した表示が必要であれば、なんらかの ユニークな属性のついたカラムでorder byしてやることです

hi3-5-0
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。

専門家に質問してみよう