- ベストアンサー
SELECT結果を任意の順で並べたい
こんなデータベースを構築しています。 "data"テーブルの中に "region" 列があり、"○○県○○市"という地域名が収められています。 ここから、DBに存在する都道府県名だけを北から順番に列挙したいのです。 普通に distinct region + order by すると、丸ごと文字コード順に並んでしまいます。 そこで、以下のような都道府県名テーブルを用意してみました。 >num列(連番)、name列(北から順番に都道府県名が入っている) dataテーブルの問い合わせ結果をnameとlike演算して、出てきたものをnumでソートをかければOKかと思ったのですが、MySQLが4.0のため副問い合わせが使用できず、撃沈しました。(レンタルサーバでバージョンアップが出来ないのです) 何か良い方法はないものでしょうか・・・。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SELECT * FROM `data` INNER JOIN `都道府県名テーブル` ON `data`.`region` LIKE CONCAT(`都道府県名テーブル`.`name`,'%') ORDER BY `都道府県名テーブル`.`num`
その他の回答 (1)
- OsieteG00
- ベストアンサー率35% (777/2173)
回答No.1
・dataテーブルにname列を挿入する ※読み込みだけならあらかじめviewで並べ替えておく手もありますね ・region列に連番を入れる →01北海道、02青森....などとして並べ替えてから県名のみを取り出す
質問者
お礼
ありがとうございます。既存の列にあまり手を加えられないもので、viewも含めて検討させて頂きます。
お礼
JOINするところまでは思いついたのですが、LIKE CONCATで演算するとは考えつきませんでした。希望に近いものが出てきました。あとは処理系のほうで整理して取り出してみます。ありがとうございました。