Sobes.tech
Back to questions
Middle
4

Что такое DISTINCT ON в PostgreSQL?

Companies where asked
Astra

Answer from AI

sobes.tech AI

DISTINCT ON — это расширение PostgreSQL для выборки уникальных строк по определённым столбцам, при этом можно контролировать, какую именно строку из группы брать. В отличие от стандартного DISTINCT, который возвращает уникальные комбинации всех выбранных столбцов, DISTINCT ON позволяет выбрать первую строку для каждой группы по указанным столбцам, учитывая порядок сортировки.

Пример:

SELECT DISTINCT ON (user_id) user_id, order_date, amount
FROM orders
ORDER BY user_id, order_date DESC;

Этот запрос вернёт по одной записи для каждого user_id — ту, у которой самая свежая дата заказа (order_date DESC).

Важно: DISTINCT ON требует обязательного указания ORDER BY, где первые поля должны совпадать с полями в DISTINCT ON.