如何在PostgreSQL中查找重复记录

我有一个名为“ user_links”的PostgreSQL数据库表,该表当前允许以下重复字段:

year, user_id, sid, cid

唯一的限制是目前所谓的“ID”的第一场,但是我现在希望增加一个约束,以确保yearuser_idsidcid都是独一无二的,但由于重复的值已存在违反此约束我不能应用约束。

有没有办法找到所有重复项?

回答:

基本思想是将嵌套查询与计数聚合一起使用:

select * from yourTable ou

where (select count(*) from yourTable inr

where inr.sid = ou.sid) > 1

您可以调整内部查询中的where子句以缩小搜索范围。


对于注释中提到的问题,还有一个很好的解决方案,(但并非所有人都阅读它们):

select Column1, Column2, count(*)

from yourTable

group by Column1, Column2

HAVING count(*) > 1

或更短:

SELECT (yourTable.*)::text, count(*)

FROM yourTable

GROUP BY yourTable.*

HAVING count(*) > 1

以上是 如何在PostgreSQL中查找重复记录 的全部内容, 来源链接: utcz.com/qa/426731.html

回到顶部