Сортировка по списку

Добрый день!
Встретил описание про MySQL

Сортировка записей по заданному списку значений

Очевидно, что, используя стандартный вариант сортировки (по алфавиту), расположить сезоны порядке «весна», «лето», «осень», «зима» не получится. Естественно, можно каждому времени года присвоить свой код, но есть и другой вариант решения – использовать функцию FIELD.

SELECT * FROM articles ORDER BY FIELD(a_season, "весна","лето","осень","зима")
Эта функция ищет значение, указанное в первом параметре, среди значений, перечисленных в остальных параметрах, и возвращает его порядковый номер. При выполнении запроса в первый параметр функции FIELD будут передаваться значения из поля a_season и, таким образом, записи будут отсортированы в заданном нами порядке.

Можно ли сделать такое в Postgres? Простой повтор кода выдает ошибку.

Опции просмотра комментариев

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

Вариантов несколько. Наиболее

Вариантов несколько.
Наиболее правильный: просто сортируйте по дате. Подойдёт?
Если нужно что-то такое, то можно создать справочник с порядком и делать join с целевой таблицей.
Или вот так:

    SELECT CASE WHEN a_season = 'весна' THEN 1
		WHEN a_season = 'лето' THEN 2
		WHEN a_season = 'осень' THEN 3
		ELSE 4 END

Месяцы привел как пример - у

Месяцы привел как пример - у меня там другие слова. Названия подразделений, их надо выводить в определенном порядке, согласно "цветовой дифференциации штанов".
Нашел такое предложение, почти как у вас:

select *
from pet
order by species, case species when 'cat' then 1
when 'dog' then 2
when 'bird' then 3
else 0 end desc;

Но почему-то не работает, ошибки нет, но сортирует просто по алфавиту, данную колонку.

Нашел еще вариант работающий
ORDER BY ID=10 DESC, ID=2 DESC, ID=56 DESC, ID=40

т.к. сначала идет сортировка

т.к. сначала идет сортировка по species, а потом по case.

Ну и как вариант ORDER BY position (col IN array_to_string(ARRAY['б', 'а'], ','))

Опции просмотра комментариев

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

Back to top

(С) Виктор Вислобоков, 2008-2023