Сортировка по полю ENUM в произвольном порядке?

Эдди

Новичок
Сортировка по полю ENUM в произвольном порядке?

В таблице есть столбец с типом данных enum.
В нем содержатся значения, скажем: a, b, c
Можно ли в запросе отсортировать строки в таком порядке: a, c, b или c, a, b или в другом, отличном от ASC и DESC?
Что-то совсем туплю.
 

dimagolov

Новичок
ну а если там не enum, а int или varcher, то разве можно?

можно задать другое поле сортировки, у которого нужный порядок.
 

Эдди

Новичок
Автор оригинала: dimagolov
ну а если там не enum, а int или varcher, то разве можно?

можно задать другое поле сортировки, у которого нужный порядок.
Прискорбно -(
Просто при enum ограниченное количество возможных вариантов.
Вот я и подумал, а вдруг...

придется php
 

dimagolov

Новичок
Эдди, если у тебя порядок только один, то можно изменить порядок значений в кортеже на нужный для сортировки
 

Эдди

Новичок
Автор оригинала: dimagolov
Эдди, если у тебя порядок только один, то можно изменить порядок значений в кортеже на нужный для сортировки
Нет. Порядок разный в разных случаях. Добавлять дополнительное поле сортировки тоже не получится, поскольку в разных скриптах нужна разная сортировка запроса из этой таблицы.

Выход вижу только в прокручивании в цикле или в разбиении запроса на несколько запросов, каждый из которых будет выводить одно из значений поля enum, ну а порядок запросов задавать в зависимости от того, какая сортировка нужна в данном случае.
 

Splurov

Новичок
В ORDER BY можно использовать любые выражения. Для твоего случая подойдёт FIND_IN_SET(colname, "a,c,b"), но об индексах, конечно, придётся забыть.
 

Эдди

Новичок
Автор оригинала: Splurov
В ORDER BY можно использовать любые выражения. Для твоего случая подойдёт FIND_IN_SET(colname, "a,c,b"), но об индексах, конечно, придётся забыть.
Не встречался с этой функцией. Проверю.
 
Сверху