172 похожих чатов

Добрый день. Запрос вида SELECT * FROM table id IN

(1,2,3,4,5,6)
Выводит элементы 1.2.3.4.6.5. Подскажите как отсортировать в порядке указаном в функции IN?

17 ответов

3 просмотра

IN не гарантирует сортировку. Можно сделать JOIN на набор этих значений, к которым приклеен sequence от 1 до N и сделать ORDER BY по sequence.

ORDER BY case id when 1 then 1 when 2 then 3 when 3 then 2 when 4 then 4 .... else null end

Mikhail-B. Автор вопроса
Ilya Zviagin
ORDER BY case id when 1 then 1 when 2 then 3 when ...

если будет указано не 6 пунктов, а 126. Как это повлияет на скорость?

А что смешного?

Он его в IN указывает, АЛЛО!

Впрочем, ты можешь и смеяться, смех — позитивная, положительная эмоция.

Mikhail-B. Автор вопроса
Ilya Zviagin
Никак

Спасибо. Попробую

Mikhail B.
Спасибо. Попробую

Ещё можно конечно если совсем лень генерировать CASE в ORDER BY , создать специальную таблицу- справочник с идентификатором в ключе и порядком сортировки в атрибуте, и делать JOIN на неё, и сортировать по этому порядку.

array_position(array[1,2,3,4,5,6], id)

Ilya Anfimov
Примерно всё!

Я выше написал...

Mikhail-B. Автор вопроса
Евгений Смирнов
array_position(array[1,2,3,4,5,6], id)

Спасибо. Сработало. Изменил на bigint array_position(array[1, 2, 3]::bigint[], c.id::bigint) Postgres 12

@b360124 Богдан, в этом треде обсуждали. Из предложенного: сделать специальную таблицу-справочник с порядком атрибутов в сортировки и делать через Join. Или генерировать этот порядок через сиквенс.

Bohdan
спасибо, простого решения нет

А разве значения в этом IN — константа? Если нет, то стоит использовать параметризацию, а там как раз будет параметр-массив, и можно сделать так, как показал @vyegorov .

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
я не про это. какая еще есть инфа, или может появиться, что ее можно обозначить названием данной игры? зачем плодить хештеги, которые обозначают одну сущность? в данном случ...
Aiwan \ (•◡•) / _bot
5
Карта сайта