按字段顺序排列+按字母顺序排列
问题描述:
我想先查询我的查询字段,然后查找那些不在'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'
答
你也能做到这样,所以你不必更改自定义字段的排序顺序: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 |
答
这是因为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
谢谢。所以我也会改变自定义字段的排序顺序,然后我会得到我需要的结果... –
是结果是你目前获得或你想要什么? –