2012-11-20 329 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

谢谢。所以我也会改变自定义字段的排序顺序,然后我会得到我需要的结果... –