MSSQL:根据条件在列中搜索重复项

时间:2018-11-15 10:59:16

标签: sql sql-server

我正在尝试创建一个脚本,该脚本将查看sql列并根据名字,姓氏和出生日期搜索重复项。你能建议我如何开始吗?就像我可以为一个ID进行操作一样,但是我需要浏览ID的输入列表并进行搜索

id    Forename    Surname    DateofBirth
1     John          Doe      2015-05-16
2     Martin        Rocks    2015-04-18
3     John          Doe      2015-05-16
4     Ben           Dover    2014-08-09

因此,在这种情况下,我只想编写一个可以获取每个ID并根据匹配的姓氏,姓氏和出生日期查找重复项的脚本

3 个答案:

答案 0 :(得分:1)

使用相关子查询

select t.* from table_name t where 
exists ( select 1 from table_name t1 where t1.DateofBirth=t.DateofBirth and t1.Forename=t.Forename
          and t1.surname=t.surname 
           group by t1.DateofBirth,t1.Forename,t1.Surname
           having count(*)>1 )

答案 1 :(得分:0)

您可以使用exists

select t.*
from table t
where exists (select 1  
              from table t1 
              where t1.Forename = t.Forename and t1.Surname = t.Surname and 
                    t1.DateofBirth = t.DateofBirth and t1.id <> t.id
             )

答案 2 :(得分:0)

您可以使用分析功能来实现您的目标,如下所示:

select * from (
select ROW_NUMBER() OVER(PARTITION BY Forename, Surname, DateofBirth order by ID) RN,
   Forename,
   Surname,
   DateofBirth
from table_name) x
where x.rn>1