2011-10-18 9 views
15

私が持っている場合:4、2、5、3,1: 明示的にmysqlクエリの並べ替え順序を指定しますか?

ID | Title 
1 | Shirt 
2 | CD 
3 | Cap 
4 | Mp3 
5 | Badge 

私はこの順序でソートしたい場合は

。これを明示的に指定するSQLクエリを実行する方法はありますか?以下のような何か:

select * from TABLE order by ID(4,2,5,3,1) ?? 
+0

「位置」列を導入してアイテムを正確に並べ替えると、位置によって並べ替えられた行を照会するのはどうですか? ID-sで注文することに依存しているのはちょうど...ばかだ。 –

答えて

22

は実際に、あなたは驚くほど近かったです。あなたがこれを実行し、MEがあなたのDOUBT知らせる

select * from TABLE order by field(ID,4,2,5,3,1) 
+1

これはMySQL固有のものですか? –

+1

@muistooshortはい - それはもっとmysql "funk"ですが、 "非標準準拠"のものはとても簡単で抵抗するのは難しいです! – Bohemian

4

あなたは初歩的なルックアップテーブルとしてORDER BYでCASEを使用することができます。

select * 
from your_table 
order by 
    case id 
     when 4 then 1 
     when 2 then 2 
     when 5 then 3 
     when 3 then 4 
     when 1 then 5 
    end 
2
select * from TABLE order by ID=1,ID=3,ID=5,ID=2,ID=4; 

:それは同じくらい簡単です。

+6

あなたはあなたの邪魔になります。 – smathy

関連する問題