2012-11-20 328 views
2

我想先查詢我的查詢字段,然後查找那些不在'by FIELD'列表中的字符串,按字母順序排序。當我這樣做,結果第一個給所有不在這些領域後場名單,EN等領域,結果顯示,被現場(正確)下令領域按字段順序排列+按字母順序排列

這是我的查詢:

SELECT merk FROM user WHERE merk <> '' group by merk 
ORDER BY FIELD(merk,'Theo', 'Anne et Valentin') ASC, merk ASC 

結果是這樣的(見最後2是按字段記錄)

'Binoche' 
'Binoche Mini' 
'Blac' 
'Carrera' 
'Christian Dior' 
'D&G' 
'Staffan Preutz Design' 
'Tim Van Steenbergen' 
'Tom Ford' 
'Tom Tailor' 
'Tommy Hilfiger' 
'Vogue' 
'Vuillet Vega' 
'You\'s Eyeworks' 
'Theo' 
'Anne et Valentin' 
+0

是結果是你目前獲得或你想要什麼? –

回答

-1

你也能做到這樣,所以你不必更改自定義字段的排序順序:http://www.sqlfiddle.com/#!2/c9122/1

SELECT merk , FIELD(merk,'Theo', 'Anne et Valentin') 
FROM user 
WHERE merk <> '' group by merk 
ORDER BY 
    COALESCE(
     NULLIF(FIELD(merk,'Theo', 'Anne et Valentin'), 0) 
     , 99999)  
    ASC 

輸出:

|     MERK | FIELD(MERK,'THEO', 'ANNE ET VALENTIN') | 
------------------------------------------------------------------ 
|     Theo |          1 | 
|  Anne et Valentin |          2 | 
|   Tom Tailor |          0 | 
| Staffan Preutz Design |          0 | 
|    Carrera |          0 | 
|    Binoche |          0 | 
|  You''s Eyeworks |          0 | 
|  Tommy Hilfiger |          0 | 
| Tim Van Steenbergen |          0 | 
|  Christian Dior |          0 | 
|   Binoche Mini |          0 | 
|     Vogue |          0 | 
|    Tom Ford |          0 | 
|     D&G |          0 | 
|     Blac |          0 | 
|   Vuillet Vega |          0 | 
2

這是因爲FIELD(merk,'Theo', 'Anne et Valentin')回報zero當值不就行了,這樣反而FIELD(merk,'Theo', 'Anne et Valentin') ASC,爲了它由下降所以存在於FIELD列表中的值將首先排序。

SELECT.. 
FROM.. 
WHERE.... 
ORDER BY FIELD(merk,'Theo', 'Anne et Valentin') DESC, merk ASC 

來源

+0

謝謝。所以我也會改變自定義字段的排序順序,然後我會得到我需要的結果... –