Как вернуть строки в том же порядке, в котором пришли id? — 19 апреля 2026 г. в 07:55:45.859
Как вернуть строки в том же порядке, в котором пришли id? Когда из приложения прилетает список id, обычный WHERE id = ANY(...) находит нужные строки, но порядок входного массива не сохраняет: SELECT * FROM users WHERE id = ANY(ARRAY[42, 7, 99]); Такой запрос вернёт правильный набор строк, но порядок будет таким, как решит планировщик, а не таким, как пришёл список. WITH ORDINALITY добавляет каждой строке её позицию во входном наборе: unnest(ARRAY[42, 7, 99]) WITH ORDINALITY Дальше это уже обычная таблица, которую можно джойнить, фильтровать и сортировать: ORDER BY x.ord В итоге база сама возвращает строки в нужном порядке, без CASE, без ручной сортировки в коде и без лишнего постобработчика. WITH ORDINALITY — это простой способ сохранить порядок входных данных в SQL, он хорошо заходит в API и массовые выборки. SQL Ready | #совет

