- ベストアンサー
カラムを好きな順で並び替え(取り出す)には?
dataテーブル id name 1 あいう 2 かきく 3 さしす ... .. . というテーブルがあり、nameの値を任意の順番ですべて取り出したいのですが、どのようにSQLを書けばいいのか分かりません。 idは自動連番です。 idの順に取り出すにも並び替えが必要ですし、SQL文以外にも何か良い方法が有りましたらご教授いただけると幸いです。 なお、このテーブルは頻繁では有りませんが順次データが増えていきます。 そのたびに取り出す順番を検討するので、更新時にあまり手間のかからない方法が望ましいです。 データベースのバージョンは5.1です。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
並べ替えの為の別テーブルを作ってみてはどうでしょうか。 例えば(TORIDASI)テーブルを作って、 ID|SEQ 1|2 2|1 3|3 結合したらどうでしょうか。 select name from data inner join toridasi on data.id = toridasi.seq order by toridasi.id; name かきく あいう さしす となるのでは? 任意に替えたいときはtoridasiテーブルをupdateしてください。
その他の回答 (2)
- Kazma_hk
- ベストアンサー率26% (115/428)
あー任意って本当に任意で明確なルールが確定されない(昇順、降順など)ってことですか・・・。 それだと、SQLでは不可能です。 やり方としては、プログラムでガリガリコーディングするか ストアドを組み上げることになるのかな? ちょっと、MYSQLでストアドとか組んだこと無いんであやふやで申し訳ないですが・・・。 データ更新時に順番を検討するってことは、並び替えのが可変になるってことだから、結構難しいのではないですかね?
- Kazma_hk
- ベストアンサー率26% (115/428)
普通にOrder Byじゃだめなんでしょうか?
補足
order byでは任意の順で取り出すことができないのです。 たとえば、 あ い う え お のデータで、い、う、お、あ、えの順で取り出したいとき、order byではこの順に並び替えて取り出すことができません。