@eldar_web

Как в SQL (postgresql) можно установить последовательность сортировки?

Допустим, есть запрос с условием:
SELECT * FROM table WHERE (id, make_name) IN (('1995','TOYOTA'),('5015','FIAT'),('1010','BMW'));

Я хочу такую последовательность сортировки, которая идет в условии.
Как реализовать запрос?
  • Вопрос задан
  • 168 просмотров
Решения вопроса 1
@rPman
Если неохота создавать временную таблицу (а идеологически это верный вариант на такой случай), то вместо использования in пользуйтесь вложенным запросом с values, добавив туда поле для порядка:
SELECT * FROM
 table t,
 (VALUES (1,'1995','TOYOTA'),(2,'5015','FIAT'),(3,'1010','BMW')) AS v(o,id,make_name)
WHERE t.id=v.id AND t.make_name=v.make_name
ORDER BY v.o
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vitsliputsli
Можно так извратится:
SELECT * 
FROM table 
WHERE (id, make_name) IN (('1995','TOYOTA'),('5015','FIAT'),('1010','BMW'))
ORDER BY CASE 
    WHEN id='1995' THEN 1
    WHEN id='5015' THEN 2
    WHEN id='1010' THEN 3
    END

Либо делать предварительную выборку и джойнить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы