如何在PostgreSQL中查找重复记录
我有一个名为“ user_links”的PostgreSQL数据库表,该表当前允许以下重复字段:
year, user_id, sid, cid
唯一的限制是目前所谓的“ID”的第一场,但是我现在希望增加一个约束,以确保year
,user_id
,sid
和cid
都是独一无二的,但由于重复的值已存在违反此约束我不能应用约束。
有没有办法找到所有重复项?
回答:
基本思想是将嵌套查询与计数聚合一起使用:
select * from yourTable ouwhere (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