在SQL中查找重复项

在SQL中查找重复项,sql,tsql,Sql,Tsql,我有一个大表,其中包含以下关于用户的数据 social security number name address 我想在表中找到所有可能的重复项 其中ssn相等,但名称不相等 我的尝试是: SELECT * FROM Table t1 WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1 SSN上的分组应该可以做到这一点 ..或者如果每个ssn有许多行,并且只想查找重复的名称 ... HAVIN

我有一个大表,其中包含以下关于用户的数据

social security number
name
address
我想在表中找到所有可能的重复项 其中ssn相等,但名称不相等

我的尝试是:

SELECT * FROM Table t1
WHERE (SELECT count(*) from Table t2 where t1.name <> t2.name) > 1

SSN上的分组应该可以做到这一点

..或者如果每个ssn有许多行,并且只想查找重复的名称

...
HAVING COUNT(DISTINCT name) > 1 
编辑,哎呀,误解了

SELECT
   ssn
FROM
   Table t1
GROUP BY
   ssn
HAVING MIN(name) <> MAX(name)

这将处理两个以上具有重复ssn的记录:

select count(*), name from table t1, (    
    select count(*) ssn_count, ssn 
    from table 
    group by ssn 
    having count(*) > 1
) t2
where t1.ssn = t2.ssn
group by t1.name
having count(*) <> t2.ssn_count

你的回答似乎给了我一行名称相同的行。我想要没有名称的行equal@Mark当前位置标题说查找误导我的副本。更正。我想我需要自联接。我喜欢最小/最大的想法。非常感谢。
select count(*), name from table t1, (    
    select count(*) ssn_count, ssn 
    from table 
    group by ssn 
    having count(*) > 1
) t2
where t1.ssn = t2.ssn
group by t1.name
having count(*) <> t2.ssn_count