我有一个看起来像这样的查询(实际查询和表更复杂):
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 但未维护顺序...