• ベストアンサー

SELECT結果を任意の順で並べたい

こんなデータベースを構築しています。 "data"テーブルの中に "region" 列があり、"○○県○○市"という地域名が収められています。 ここから、DBに存在する都道府県名だけを北から順番に列挙したいのです。 普通に distinct region + order by すると、丸ごと文字コード順に並んでしまいます。 そこで、以下のような都道府県名テーブルを用意してみました。 >num列(連番)、name列(北から順番に都道府県名が入っている) dataテーブルの問い合わせ結果をnameとlike演算して、出てきたものをnumでソートをかければOKかと思ったのですが、MySQLが4.0のため副問い合わせが使用できず、撃沈しました。(レンタルサーバでバージョンアップが出来ないのです) 何か良い方法はないものでしょうか・・・。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

SELECT * FROM `data` INNER JOIN `都道府県名テーブル` ON `data`.`region` LIKE CONCAT(`都道府県名テーブル`.`name`,'%') ORDER BY `都道府県名テーブル`.`num`

pythian
質問者

お礼

JOINするところまでは思いついたのですが、LIKE CONCATで演算するとは考えつきませんでした。希望に近いものが出てきました。あとは処理系のほうで整理して取り出してみます。ありがとうございました。

その他の回答 (1)

  • OsieteG00
  • ベストアンサー率35% (777/2173)
回答No.1

・dataテーブルにname列を挿入する ※読み込みだけならあらかじめviewで並べ替えておく手もありますね ・region列に連番を入れる →01北海道、02青森....などとして並べ替えてから県名のみを取り出す

pythian
質問者

お礼

ありがとうございます。既存の列にあまり手を加えられないもので、viewも含めて検討させて頂きます。