如何在PostgreSQL的关联字段中查找重复项?

如何在PostgreSQL的关联字段中查找重复项?,postgresql,Postgresql,我在postgresql中有一个具有以下值的表: KEY VALNO 1 a1 2 x1 3 x2 4 a3 5 a1 6 x2 7 a4 8 a5 9 x6 4 x7 7 a6 键需要唯一的值,但有重复项4,7。VALNO应该为它们分配一个唯一的键,但同一VALNO使用了多个键a1,使用了1和5,x2使用了3和6 我尝试使用以下sql查找重复项,但未能成功 select KEY, VALNO from mbs m1 where (select co

我在postgresql中有一个具有以下值的表:

KEY VALNO
1   a1
2   x1
3   x2
4   a3
5   a1
6   x2
7   a4
8   a5
9   x6
4   x7
7   a6
键需要唯一的值,但有重复项4,7。VALNO应该为它们分配一个唯一的键,但同一VALNO使用了多个键a1,使用了1和5,x2使用了3和6

我尝试使用以下sql查找重复项,但未能成功

select KEY, VALNO from mbs m1
where (select count(*) from mbs m2
where m1.KEY = m2.KEY) > 1
order by KEY
有没有更好的方法找到相同的VALNO使用了不同的钥匙,而相同的钥匙使用了不同的VALNO

重复VALNO 复制密钥 对于VALNO重复记录,我们可以使用COUNT作为分析函数:

以cte为例 通过VALNO cnt在分区上选择*,计数* 从mbs 选择键,VALNO 来自cte 其中cnt>1; 密钥重复查询的逻辑几乎相同,只是我们可以将其用于计数定义:

COUNT(*) OVER (PARTITION BY "KEY") cnt
KEY VALNO
4   x7
7   a6
COUNT(*) OVER (PARTITION BY "KEY") cnt