2017-03-10 15 views
-1

PROVIDER_IDは、私はそれが= 2MySQLの順序が間違った順序を与える

PROVIDER_IDで、その後3及びそれらの後PROVIDER_ID = 1で最初のレコードを表示期待1,2,3

SELECT * FROM `news` order by field (provider_id, 1,3) 

可能性があり実際には、provider_id = 2、それに1、3のすべてのレコードを表示します。

リストを最初に1と3だけ残し、それからすべての残りのprovider_idは正しいクエリを書く方法は?

答えて

2

あなたはそれをなぜ期待しますか?

FIELDあなたORDER BYは明らかにprovider_idない1または最初の3で行をソートしますので、それは、見つかっていない場合は、最初の引数の値と一致し、0リスト内のインデックスを返します。ちょうどあなた自身のために参照してくださいよ、field (provider_id, 1,3)の値を持つ列を追加してみて、それをテストする

SELECT *,field (provider_id, 1,3) FROM `news` order by field (provider_id, 1,3) 

あなたは単に= DESCを追加(そしておそらくあなたがPROVIDER_IDたい場合は、1と3を入れ替えることができ1):

SELECT * FROM `news` order by field (provider_id, 3, 1) DESC 
関連する問題