2017-11-15 11 views
2

私はチュートリアルを調理するサイトを持っています。 mysqlデータベースのカラムの1つに初心者、中級、上級、エキスパートのいずれかが入ります。私は上記の方法で結果を注文するMySQLのクエリを書く方法があったかどうかを知りたいですか?これも可能ですか?MYSQL非英数字で並べ替え

+1

はいこれらの値をソート可能な値に変換する式を記述し、その式をORDER BY句に入れることは可能です。それを行う方法はたくさんあります。ほとんどのポータルでは、ANSI準拠のCASE式を使用します。 '注文の場合mycol'初心者の場合 '1'中間 'その後の' 2 '高度' 3 'エキスパート' THEN 4 ELSE 5 END'。 MySQLでは、同等の結果を達成する短い式のいくつかのオプションがあります。 'FIND_IN_SET(mycol、 '初心者、中級、上級、エキスパート)' – spencer7593

答えて

0

あなたはその小さなテーブル場合INSTRで並べ替えることができます。

ORDER BY INSTR('Novice, Intermediate, Advanced, Expert', `colname`) 

しかし、これは大きなテーブルの上に遅くなります。 1から4までの数値を保存し、indexを追加する方が良いでしょう。その後、必要に応じて番号を初心者、中級、上級、またはエキスパートに翻訳します。またはおそらく2つの列が、数値とテキストの値の違いにつながる可能性があります。

関連する問題