我有一个包含 3 列的表格。它在第 2 列和第 3 列上有重复项。我需要只选择重复的行(包含所有 3 列)。怎么做?请帮助我。
var1 var2 var3
a a a<br/>
b a a<br/>
c a a<br/>
d b b<br/>
e c c
以上是表结构。它有 3 列 var1、var2、var3。仅基于列 var2 和 var3,我们必须假设它是重复记录。我们不应该在查找重复项时考虑 var1。抱歉对齐。
我使用下面的查询来获取所有有/没有重复的行,但具有用于识别重复记录的排名。但是我不能只得到重复的记录。
select var1,var2,var3,ROW_NUMBER() over(PARTITION BY
var2,var3 order by var2,var3) as rnk
from vart
除此之外,我如何获得重复条目中的最大排名记录? 谢谢。
最佳答案
如果您想要所有有重复的行,您可以使用count(*) over()
select var1, var2, var3
from (
select var1,
var2,
var3,
count(*) over(partition by var2, var3) as dc
from YourTable
) as T
where dc > 1
结果:
var1 var2 var3
---- ---- ----
a a a
b a a
c a a
如果您想要除一个之外的所有重复项,请改用 row_number() over()
。
select var1, var2, var3
from (
select var1,
var2,
var3,
row_number() over(partition by var2, var3 order by var1) as rn
from YourTable
) as T
where rn > 1
结果:
var1 var2 var3
---- ---- ----
b a a
c a a
关于sql - 根据少数列仅选择重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644874/