我的情况比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
后,模糊错误得到了解决。
答案 0 :(得分:0)
您必须在order by
语句中添加表别名:
ORDER BY FIELD(a.TYPE, 'FreeText', 'Hybrid', 'Structured') ASC
因为它是两个表的列。