首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL server 2008,有列:名称、电话,电话有重复行,想在原表中只保留重复行的第一行,求语句

2013-11-14 
SQL server 2008,有列:姓名、电话,电话有重复行,想在原表中只保留重复行的第一行,求语句表名BM电话姓名1330

SQL server 2008,有列:姓名、电话,电话有重复行,想在原表中只保留重复行的第一行,求语句
表名BM
电话          姓名
13300001111   张三
13300001111   李四
13300001111   鬼子
18877776666   老先生

当表中电话有重复行,而对应的姓名不同,想在原表中只保留重复行的第一行,变成以下效果
电话          姓名
13300001111   张三
18877776666   老先生

求语句,谢谢


[解决办法]
是这样吗:


if object_id('tb') is not null 
drop table tb
go 

create table tb([电话] bigint,[姓名] varchar(6))

insert tb
select 13300001111,'张三' union all
select 13300001111,'李四' union all
select 13300001111,'鬼子' union all
select 18877776666,'老先生'
go


;with t
as
(
select *,
       ROW_NUMBER() over(partition by [电话]
                             order by @@servername) as rownum
from tb
)

--删除多余的数据
delete from t where rownum > 1



--查询数据,发现多余数据已经删除
select *
from tb
/*
电话         姓名
13300001111张三
18877776666老先生
*/

热点排行