Моя ситуация немного сложнее, чем order-by-enum-field-in-mysqlORDER BY «ENUM поле» с расчетной области в MYSQL
My 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 Да, у меня тоже поле 'TYPE' в таблице' ProCat' – Phoenix