ORDER BY FIELD,给定字段顺序最后

时间:2013-11-26 07:01:47

标签: mysql sql-order-by

我正在表格“业务”如下所示

enter image description here

我想按自定义顺序按类型获取记录顺序。所以我写了这样的查询 SELECT * FROM business         ORDER BY FIELD(type,'type3','type2','type10')

但是发生的事情是其他类型按顺序出现并且给定的顺序终于出现了。给定的顺序应该在顶部,然后是其他记录。上面的查询返回结果如下。 enter image description here

如何将type3,type2和type10按顺序排在最前面。

3 个答案:

答案 0 :(得分:1)

那将是:

SELECT 
  * 
FROM 
  business 
ORDER BY 
  `type` IN ('type3', 'type2', 'type10'),
  FIELD (`type`, 'type3', 'type2', 'type10')

答案 1 :(得分:0)

尝试以下:

ORDER BY 
  CASE `type`
    WHEN 'type3' THEN 1
    WHEN 'type2' THEN 2
    WHEN 'type10' THEN 3
    ELSE 4
END

答案 2 :(得分:0)

要使用field功能查看结果集顶部的选择性数据,您必须在这些值集上使用ASCDESC。否则,将返回默认结果。你的就是一个例子。

您可以尝试使用

ORDER BY FIELD (type, 'type3', 'type2', 'type10') DESC

将结果视为

type10
type2
type3
  

如何将type3,type2和type10按顺序排在最前面

使用ASC将导致

type3
type2
type10

FieldASC一起使用时,函数DESC的数据输入顺序是优先级。否则结果将是默认值。

  

我在查询中没有提供这些字段

除非您指定WHERE条件,否则它们肯定会在结果集中。 FIELD函数不是WHERE子句的别名。

请参阅