使用TSQL将列映射到其ID

时间:2014-08-18 08:34:21

标签: sql-server tsql

我有一个查询可以获取表中的重复记录。见下文:

SELECT column1, column2
FROM table1
GROUP BY  column1, column2
HAVING COUNT(column1 +  column2) > 1

现在,我需要将column1和column2映射到其表 ID ,我无法在上面的查询中加入。我使用TSQL,我该怎么做?

2 个答案:

答案 0 :(得分:0)

此代码用于获取ID:

SELECT Id FROM table1 INNER JOIN
(
    SELECT column1, column2
    FROM table1
    GROUP BY  column1, column2
    HAVING COUNT(column1 +  column2) > 1
) thisTable
ON
table1.column1= thisTable.column1AND 
table1.column2= thisTable.column2

答案 1 :(得分:0)

您可以使用count窗口聚合来查找重复的(column1, column2)对及其ID:

declare @table table (id int, column1 varchar(10), column2 varchar(10))

insert into @table values
(1, 'A', 'B')
,(2, 'C', 'D')
,(3, 'A', 'C')
,(4, 'B', 'D')
,(5, 'C', 'A')
,(6, 'D', 'B')
,(7, 'A', 'B')


;with a as (
    select id, column1, column2,
        cnt = count(id) over (partition by column1, column2)
    from @table
)
select id, column1, column2
from a
where cnt > 1

结果:

id          column1    column2
----------- ---------- ----------
1           A          B
7           A          B