【问题标题】:Order by Field + alphabetically按字段排序 + 按字母顺序
【发布时间】:2012-11-08 16:35:38
【问题描述】:

我想先按字段排序我的查询,然后对不在“按字段”列表中的查询排序,按字母顺序排序。当我这样做时,结果首先给出所有不在字段列表中的字段,在这些字段之后,结果显示按字段排序的字段(正确)

这是我的查询:

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

结果是这样的(看最后2条是ORDER BY FIELD记录)

'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'

【问题讨论】:

  • 结果是你目前得到的还是你想要的?

标签: mysql sql sql-order-by


【解决方案1】:

这是因为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

来源

【讨论】:

  • 谢谢。所以我也会改变自定义字段的排序,然后我会得到我需要的结果......
【解决方案2】:

您也可以这样做,这样您就不必更改自定义字段的排序顺序: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 |

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2012-11-02
    • 1970-01-01
    • 2019-12-24
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多