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

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

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

17 ответов

11 просмотров

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 .

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта