mysql:14542
From: "F.Y" <"F.Y" <fumi_sby@xxxxxxxxxx>>
Date: Thu, 15 May 2008 23:18:41 +0900 (JST)
Subject: [mysql 14542] Re: PHP の usort() のようなことをしたい
ヒント: select field('F', 'D', 'E', 'F', 'G', 'B', 'A', 'Z'); ごくふつーに order by field(cat_1st, 'P', 'A', 'N', 'C', 'NO') Oracleだとdecode、初歩中の初歩でないかい? --- Akikazu Takenaka <a.p.takenaka@xxxxxxxxxx> wrote: > 神奈川の竹中と申します。 > お世話になります。 > > 下記の環境を利用しております。 > 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/ > > -------------------------------------- GANBARE! NIPPON! Win your ticket to Olympic Games 2008. http://pr.mail.yahoo.co.jp/ganbare-nippon/
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" <]