[前][次][番号順一覧][スレッド一覧]

mysql:14538

From: "Akikazu Takenaka" <"Akikazu Takenaka" <a.p.takenaka@xxxxxxxxxx>>
Date: Thu, 15 May 2008 19:16:50 +0900
Subject: [mysql 14538] PHPの usort() のようなことをしたい

神奈川の竹中と申します。
お世話になります。

下記の環境を利用しております。
OS: CentOS 4.5
PHP: 4.3.9
MySQL: 4.1.20

テーブルの内容を、設定した順番でソートしたいと考えております。
表題のとおり、PHPの usort() と同じようなことです。

下記のようなテーブルを仮定します。
(必要な部分だけ抽出しています)

CREATE TABLE `example` (
`cat_1st` VARCHAR(10) NOT NULL DEFAULT 'NO',
`cat_2nd` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

cat_1st には、1文字のアルファベットか 'NO' のいずれかが入り、
cat_2nd には、1〜2桁の数値が入ります。

ここで、 cat_1st をキーとしてソートしたいのですが、
単純に ASC や DESC でソートするのではなく、
特定の順番で並べたいと考えています。

例: 'P' → 'A' → 'N' → 'C' → ... → 'NO'

このようなソートを、MySQLだけで実現できるのでしょうか?

上記のように並べたいのは、 cat_1st のそれぞれの値の重要性や、
使用頻度などによるものです。
ただ、このソートは必須ではなく、「あまり手をかけずにできれば」という程度なので、
このためにカラムを1つ(重要性などを表す数値など)増やす、
などは考えておりません。

もし何か有用な方法をご存知の方がいらっしゃいましたら、
ご教授頂ければ幸いです。
もちろん、「PHPでやるほうが速い」などのアドバイスでも構いません。

以上、恐縮ですが、よろしくお願い致します。

-- 
竹中 彰一 (Akikazu Takenaka)
a.p.takenaka@xxxxxxxxxx
------------------------------------------------------------
equal1
http://www.equal1.net/

[前][次][番号順一覧][スレッド一覧]

->   14538 2008-05-15 19:16 ["Akikazu Takenaka" <] PHPの usort()  のようなことをしたい     
     14539 2008-05-15 19:40 ┣[HIRATSUKA Sadao <hir]                                       
     14540 2008-05-15 20:03 ┣[chuuken kenkou <ken_]                                       
     14542 2008-05-15 23:18 ┗["F.Y" <fumi_sby@xxxx]                                       
     14547 2008-05-16 10:46  ┗["Akikazu Takenaka" <]