Пункт заказа с явным порядком - PullRequest
1 голос
/ 06 апреля 2019

У меня есть строка с тремя возможными результатами

no 
neutral
yes

Я хочу сохранить этот порядок.Desc или ASC не будут совпадать.Итак, есть ли способ указать, какой заказ ожидается?

Не уверен, что это уместно, но я использую sql alchemy.

.order_by(Survey.rating).all()      

Ответы [ 2 ]

2 голосов
/ 06 апреля 2019

Массивы могут быть удобны для этого типа логики в Postgres. Один из методов:

array_position(array['no', 'neutral', 'yes'], colname)

Это удобно, потому что его легко расширить до большего числа значений.

1 голос
/ 06 апреля 2019

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

order by case col1 when 'no' then 1 when 'neutral' then 2 else 3 end
...