在 PostgreSQL 中查找具有 ID 的列中的重复项

3
例如,我有一张表叫做“姓名”,里面有重复的记录:
Id    |  Firstname
--------------------
1     |  John
2     |  John
3     |  Marc
4     |  Jammie
5     |  John
6     |  Marc

如何获取重复记录并显示它们的相应主键ID?

2个回答

9

使用Count()Over()窗口聚合函数

Select * from
(
select Id, Firstname, count(1)over(partition by Firstname) as Cnt
from yourtable
)a
Where Cnt > 1

3
SELECT t.*
FROM t
INNER JOIN
(SELECT firstname
 FROM t
 GROUP BY firstname
 HAVING COUNT(*) > 1) sub
ON t.firstname = sub.firstname

使用子查询可以解决问题。选择在表t中出现过一次以上的名字。然后将这些名字与主表连接起来,以获取主键信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接