PostgreSQL UNION仅忽略特定列的重复项

时间:2015-08-07 16:41:26

标签: sql database postgresql

我有帖子表和通知表。我希望通知表中的帖子评分为999999,而不是他们的orijinal分数。以下查询给出了图片中的结果。红色通过通知加入工会,其余来自帖子。正如你所看到的那样,即使他们是工会化的蓝调也是重复的,因为得分不同<%= link_to "Contracts", [@space,@contract], class: "btn btn-primary" %> 并不将它们视为重复。如何将它们视为重复项,只允许红色项。

enter image description here

@space@contract给出的结果相同,因为我更改了联合通知部分的对象得分值。我尝试了@space = Space.find(params[:space_id]) @contract = Contract.find(params[:id]) ,但它不允许对得分进行排序,UNION对其进行排序错误。

UNION

是否有办法UNION ALL只允许复制DISTINCT ON (id)列?

1 个答案:

答案 0 :(得分:2)

您可以使用CTE:

with CTE as ( your query without order by )
Select id, created_at, data, max(score) as score
from cte
Group by id, create_at, data
Order by ...