1

我有一个包含名称、相对名称和年龄的表,如下
SNO    名称                    相对名称    年龄
1 AAKASH SOOD RAJEEV SOOD 22
2 AAKASH SOOD RAJEEV SOOD 21
3 AAMITA Kumari RAJEEV VERMA 35
4 AAMITA Kumari RAJEEV VERMA 46
5 AAKASH SOOD RAJEEV SOOD 23
6 NARESH维尔马希夫拉尔萨胡 37
7 纳雷什维尔马希夫拉尔萨胡 38

现在我想知道这是否可能在 SQL Server 2005 数据库中提取重复记录,其名称、相对名称和年龄在 +1 或 -1 范围内。我的意思是只提取这些记录 SNO     NAME                    相对名称    年龄
1 AAKASH SOOD RAJEEV SOOD 22
2 AAKASH SOOD RAJEEV SOOD 21
5 AAKASH SOOD RAJEEV SOOD 23
6 NARESH VERMA SHIV LAL SAHU 37
7 NARESH VERMA SHIV LAL SAHU 38
感谢您的帮助和建议进步

4

1 回答 1

1

看一下这个:

--create table sno (sno varchar(50), name varchar(100), rel_name varchar(100), age int)

--insert into sno values
--('1','AAKASH SOOD','RAJEEV SOOD','22'),
--('2','AAKASH SOOD','RAJEEV SOOD','21'),
--('3','AAMITA Kumari','RAJEEV VERMA','35'),
--('4','AAMITA Kumari','RAJEEV VERMA','46'),
--('5','AAKASH SOOD','RAJEEV SOOD','23'),
--('6','NARESH VERMA','SHIV LAL SAHU','37'),
--('7','NARESH VERMA','SHIV LAL SAHU','38')

select distinct n1.*
from sno n1
join sno n2 on n1.name = n2.name
    and n1.rel_name = n2.rel_name
    and n1.sno != n2.sno
    and (n1.age = n2.age or n1.age = n2.age + 1 or n1.age = n2.age - 1)

SQLFiddle

于 2013-07-19T10:18:37.033 回答