У меня есть запрос, который выглядит следующим образом (фактический запрос и таблицы более сложные) :
SELECT item.other_uuid, item.uuid, category.name
FROM item, category
WHERE ...
ORDER BY array_position(ARRAY[{'CDX', 'KDJ', 'PLM', 'OLA', 'OWK', 'CAT'}]::uuid[], item.uuid), category.name;
Это дает мне список имен категорий в определенном порядке (uuid порядок, переданный массивом). Например:
789 CDX "Cat D"
123 KDJ "Cat A"
456 PLM "Cat B"
123 OLA "Cat F"
456 OWK "Cat X"
123 CAT "Cat Z"
Я бы хотел добавить в этот запрос DISTINCT ON 'item.other_uuid'. Таким образом, итоговый список будет:
789 CDX "Cat D"
123 KDJ "Cat A"
456 CAT "Cat B"
Как я могу этого добиться? Postgres хочет, чтобы ORDER BY & DISTINCT соответствовал, но это был бы неправильный порядок для моего запроса.
Я пытался сделать это подзапросом и использовать DISTINCT в основном запросе, но порядок не соответствует ' t поддерживается ...