我的情況有點複雜得多order-by-enum-field-in-mysqlORDER BY「ENUM場」與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'列嗎? – 2015-02-09 08:26:27
@juergend是的,我在'ProCat'表中也有'TYPE'字段 – Phoenix 2015-02-09 08:28:43