- ベストアンサー
テーブルレーコードをソートして更新するにはどうしたらいいでしょうか?
社内向けシステムDBの更新作業を行っています。 システム上ではテーブルレコードがコンボボックスの形で 格納順に表示されてしまいます。 ただこの表示順がカテゴリー順になっていないのでとても選択しにくいです。 そこでレコードをカテゴリー順に並びかえテーブルを更新したい(SELECTで並び替えた状態で更新したい)のですがどうやればよろしいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず大前提としてSELECTはorder by句でソート順を指定しないと順番は保証されません。 SQL Serverの場合、デフォルトだとプライマリーキー順にデータがソートされた状態で物理的に格納されます。なのでorder byを指定しないとプライマリーキー順で表示される場合が多いです。 プライマリーキーがないとインサート順で表示されているように見えることもありますが、保証された動きではありません。SQLの実行計画次第で変ります。 なのでSELECT時にORDER BY句でソート順を指定するのが正しいです。 abc123等の並びででソートできないような内容の場合は、ソート用の項目を作成することもあります。
その他の回答 (2)
- jamshid6
- ベストアンサー率88% (591/669)
- jamshid6
- ベストアンサー率88% (591/669)
そもそもの部分が書かれていないとわかりませんね。 ・SQL Serverの話ですか?であればバージョンは? ・EnterpriseManagerやSQL Server Management Studioで更新しているのですか? それともAccessやVBによるアプリケーションを使って更新しているのですか? ・後者だとすれば、どんなインターフェースのどんな画面なのですか? (コンボボックスには何が表示されていて、選んだあとどうやったら更新される画面なのですか?) そしてそのソースを変更する権限は質問者さんにはあるのですか?
補足
SQL Server2005でSQL Server Management Studioで更新を行っております。 コンボボックスうんぬんはテーブルを参照して表示する ブラウザでの話ですので関係なかったですね。 SQL Server Management Studioでテーブルのレコード順を並び替えて 更新したいということです。
お礼
アドバイス頂きありがとうございました。 自己解決いたしました。 SELECTで抽出した内容をINSERTでsql保存しておき、全行デリートしてからsqlを実行で順番の更新ができました。
補足
回答ありがとうございます! 説明が大分たらなかったので補足させていただきます。 今編集しているのは主キー(数値:順に振っているだけのコード)と名称という列しかないテーブルです。 ただ、この主キーがメインテーブルのフォーリンキーとしてリンクしているため編集テーブル上の主キーをいじれない状態です。 現在は編集テーブル上の主キー順にレコードが並んでおり、その順番通りにブラウザのプルダウンに名称が表示されてしまいます。 名称には相関性がありますので、ユーザーが選択しやすいように名称の順にテーブルのレコードをソートし更新してプルダウンに反映させたいと考えているのですが、可能でしょうか?