sql - 根据少数列仅选择重复记录

标签 sql sql-server

我有一个包含 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/

相关文章:

mysql - 如何规范化具有重复值的 MySQL 表

sql - 每个数据库运行时间最长的查询

java - JDBC 在 "same"时间打开 2 个连接

sql-server - 无法使用 Jmeter 创建类 'com.microsoft.sqlserver.jdbc.SQLServerDriver' 的 JDBC 驱动程序

sql - 删除带有自引用外键的行

sql - 哪个 SQL 查询更好?

SQLITE 批量更新语句

sql - 为表的差异添加唯一 ID 号

SQL 查询返回不需要的值选择计数名称姓氏返回所有记录

sql-server - 如何验证两个SQL Server 数据库是否包含相同的数据?