我有一个名为“user_links”的PostgreSQL数据库表,该表当前允许以下重复字段:
year, user_id, sid, cid
唯一性约束当前是第一个称为“id”的字段,但是我现在想添加一个约束以确保
year
,user_id
,sid
和cid
都是唯一的,但我无法应用该约束,因为已经存在重复值违反了该约束约束。有没有办法找到所有重复项?
最佳答案
基本思想是将嵌套查询与计数聚合一起使用:
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
关于sql - 如何在PostgreSQL中查找重复记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28156795/