使用MYSQL中的计算字段对“ENUM字段”进行排序

时间:2015-02-09 08:25:28

标签: mysql enums

我的情况比order-by-enum-field-in-mysql

复杂一些

我的SQL是:

SELECT `a`.`ChannelID`,
  `a`.`CategoryID`,
  `a`.`Country`,
  `a`.`LocalName`,
  if((`a`.`Type` = 'FreeText'
      AND a.IsHybrid = 'YES'), 'Hybrid', 
      if(`a`.`Type` = 'FreeText'
        AND a.IsHybrid = 'NO', 'FreeText', a.Type)) AS TYPE,
  `a`.`IsHybrid`
FROM `ProCatCountry` AS `a`
  INNER JOIN `ProCat` AS `b` ON a.CategoryID = b.CategoryID
ORDER BY FIELD(a.TYPE, 'FreeText', 'Hybrid', 'Structured') ASC 

但订单不正确,先出现FreeText条记录Hybrid,然后FreeText再次出现。

字段TYPE是枚举,我想按此字段排序,同时,一个未包含在枚举列表中的值 - 计算出的一个名为Hybrid的值也应正确排序。我该怎么办?

最初,有一个TYPE字段模糊错误,感谢@Jens,更改为a.TYPE后,模糊错误得到了解决。

1 个答案:

答案 0 :(得分:0)

您必须在order by语句中添加表别名:

ORDER BY FIELD(a.TYPE, 'FreeText', 'Hybrid', 'Structured') ASC 

因为它是两个表的列。