• ベストアンサー

テーブルレーコードをソートして更新するにはどうしたらいいでしょうか?

社内向けシステムDBの更新作業を行っています。 システム上ではテーブルレコードがコンボボックスの形で 格納順に表示されてしまいます。 ただこの表示順がカテゴリー順になっていないのでとても選択しにくいです。 そこでレコードをカテゴリー順に並びかえテーブルを更新したい(SELECTで並び替えた状態で更新したい)のですがどうやればよろしいでしょうか?

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

  • ベストアンサー
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

まず大前提としてSELECTはorder by句でソート順を指定しないと順番は保証されません。 SQL Serverの場合、デフォルトだとプライマリーキー順にデータがソートされた状態で物理的に格納されます。なのでorder byを指定しないとプライマリーキー順で表示される場合が多いです。 プライマリーキーがないとインサート順で表示されているように見えることもありますが、保証された動きではありません。SQLの実行計画次第で変ります。 なのでSELECT時にORDER BY句でソート順を指定するのが正しいです。 abc123等の並びででソートできないような内容の場合は、ソート用の項目を作成することもあります。

sugomori
質問者

お礼

アドバイス頂きありがとうございました。 自己解決いたしました。 SELECTで抽出した内容をINSERTでsql保存しておき、全行デリートしてからsqlを実行で順番の更新ができました。

sugomori
質問者

補足

回答ありがとうございます! 説明が大分たらなかったので補足させていただきます。 今編集しているのは主キー(数値:順に振っているだけのコード)と名称という列しかないテーブルです。 ただ、この主キーがメインテーブルのフォーリンキーとしてリンクしているため編集テーブル上の主キーをいじれない状態です。 現在は編集テーブル上の主キー順にレコードが並んでおり、その順番通りにブラウザのプルダウンに名称が表示されてしまいます。 名称には相関性がありますので、ユーザーが選択しやすいように名称の順にテーブルのレコードをソートし更新してプルダウンに反映させたいと考えているのですが、可能でしょうか?

その他の回答 (2)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

#1です。 SSMSでテーブルを直接開いて編集しているのであれば、 ツールバーから「抽出条件ペインの表示」を選んで、たとえば以下のように条件を指定し、実行すれば並び順を希望のものにしたまま編集できます。

sugomori
質問者

お礼

アドバイス頂きありがとうございました。 自己解決いたしました。 SELECTで抽出した内容をINSERTでsql保存しておき、全行デリートしてからsqlを実行で順番の更新ができました。

sugomori
質問者

補足

ご回答ありがとうございます! SELECT文で希望の並び順で抽出したままの順番でテーブルを更新したいのですが、無理でしょうか?

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

そもそもの部分が書かれていないとわかりませんね。 ・SQL Serverの話ですか?であればバージョンは? ・EnterpriseManagerやSQL Server Management Studioで更新しているのですか?  それともAccessやVBによるアプリケーションを使って更新しているのですか? ・後者だとすれば、どんなインターフェースのどんな画面なのですか?  (コンボボックスには何が表示されていて、選んだあとどうやったら更新される画面なのですか?)  そしてそのソースを変更する権限は質問者さんにはあるのですか?

sugomori
質問者

補足

SQL Server2005でSQL Server Management Studioで更新を行っております。 コンボボックスうんぬんはテーブルを参照して表示する ブラウザでの話ですので関係なかったですね。 SQL Server Management Studioでテーブルのレコード順を並び替えて 更新したいということです。

関連するQ&A