【发布时间】:2026-01-23 03:25:01
【问题描述】:
我的情况比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后,这个不明确的错误得到了解决。
【问题讨论】:
-
两个表中都有
type列吗? -
@juergend 是的,我在
ProCat表中也有TYPE字段