SQL去掉重复的代码

x403096100 2018-02-27 06:28:16
表名:kehu,
字段:ID
字段: name
字段:tel
字段:address
字段:age

1. name很多重复的,去掉重复的,(保留初始的数据)

2.去重之后,再次查询name的所有信息

求这两个需求的SQL语句代码

...全文
1319 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-04-12
  • 打赏
  • 举报
回复
--1. 将原表备份,防止意外
SELECT * 
INTO kehu_bak_20180412
FROM kehu

--2. 删除重复数据
;WITH cte as (
	SELECT ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY id) AS rid,* FROM kehu
)
DELETE FROM cte WHERE rid>1

--3. 查询name 的所有信息
SELECT [name] FROM kehu
qq_41988350 2018-04-12
  • 打赏
  • 举报
回复
去重请采用 row_number方法哦 sqlserver row_number关键字的用法
  • 打赏
  • 举报
回复
居然用游标~
日月路明 2018-03-01
  • 打赏
  • 举报
回复

declare Cur cursor
for
select Name,Num=count(*)-1 from TableA group by Name having count(*)>1

declare @Name varchar(100),@Num int

open Cur
fetch next from Cur into @Name,@Num
while @@fetch_status=0
BEGIN
  set rowcount @Num
  delete TableA where Name=@Name
  fetch next from Cur into @Name,@Num  	
END

close Cur
deallocate cur
x403096100 2018-02-27
  • 打赏
  • 举报
回复
(保留初始的数据).......这个需求可以去掉
zheninchangjiang 2018-02-27
  • 打赏
  • 举报
回复
这种需求极不合理,因为名称重复,而原始数据倒底是哪条不清楚,稍有不慎就是正确资料的丢失
RINK_1 2018-02-27
  • 打赏
  • 举报
回复

select *
from (select *,ROW_NUMBER() over (PARTITION by name order by id) as seq from kehu) as A
where seq=1

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧