SQLで顧客情報の検索結果を並び替える 都道府県コード 順に並べる場合、都道府県コードのテーブル(1, 北海道)等に連結するのが正しいやり方 (下は住所の先頭2文字あたりで連結している) SELECT * FROM cust_table LEFT JOIN area_table ON SUBSTR(cust_table.jusyo, 1, 2) = SUBSTR(area_table.areaname, 1, 2) WHERE ... ORDER BY areaindex; ただし、住所が都道府県から入っている必要あり、入っていないと先頭にきます 都道府県コードに郵便番号や市外局番なんかも入れておくとよいかもね そんなの面倒くせ~とか、テーブル追加できない場合 → 郵便番号と電話番号でなんとかしてみる どちらも都道府県コードとは並びが違います 郵便番号 = 北陸、東北や北海道の一部が、九州沖縄より後ろになる 電話番号 = 中国、九州の並びがおかしくなる 電話番号の市外局番が 01 か 02 で始まらない所は、電話番号の 左2桁 それ以外は、電話番号順(全桁)でソート 次に郵便番号でソート この組み合わせで 「北陸東北北海道は電話番号、それ以外は郵便番号」なソートになります SELECT * FROM cust_table ORDER BY CASE WHEN (SUBSTR(phone, 2, 1) <> '1') AND (SUBSTR(phone, 2, 1) <> '2') THEN SUBSTR(phone, 1, 2) ELSE phone '; END, zipcode; で、何となく北からブロック毎に分かれてくれます あれ?北陸あたりが...