如何删除部分重复数据

fyxi 2005-04-21 02:39:17
我想实现的是这样的,有一张表。里面有几个字段,有部分是相同的

table
ID ClassNo SpotName Name
1 2 A 张三
2 2 A 李四
3 2 B 王五
4 3 A 张三

生成这样的效果
table
ID ClassNo SpotName Name
1 2 A 张三
3 2 B 王五
4 3 A 张三

去掉了第二条记录,因为第二条的 CLASSNO 和SPOTNAME和第一条一样,
有什么好的方法实现?


...全文
294 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyxi 2005-04-21
  • 打赏
  • 举报
回复
邹老师,不好意思,我是写错了,
paoluo 2005-04-21
  • 打赏
  • 举报
回复
--建立测试环境
Create table [table]
(ID Int,
ClassNo Int,
SpotName Varchar(10),
Name Nvarchar(10))
GO
--插入数据
Insert [table] Values(1, 2, 'A', N'张三')
Insert [table] Values(2, 2, 'A', N'李四')
Insert [table] Values(3, 2, 'B', N'王五')
Insert [table] Values(4, 3, 'A', N'张三')
--测试
Select * from [table] a
where Not exists(select * from [table] where CLASSNO=a.CLASSNO and SPOTNAME=a.SPOTNAME and id<a.id)
--删除测试环境
Drop table [table]
--结果
/*
ID ClassNo SpotName Name
1 2 A 张三
3 2 B 王五
4 3 A 张三
*/
fyxi 2005-04-21
  • 打赏
  • 举报
回复
谢谢你们的回复
宝宝 :我用了你的,功能还是没实现,显示还是有重复

邹老师,不行啊,没有删除
(所影响的行数为 0 行)

前面说错了,不是要删除,而是不显示部分重复的记录,因为这张表是原始记录表,不能删除

zjcxc 2005-04-21
  • 打赏
  • 举报
回复
delete a from [table] a
where exists(select * from [table] where CLASSNO=a.CLASSNO and SPOTNAME=a.SPOTNAME and id<a.id)
leeboyan 2005-04-21
  • 打赏
  • 举报
回复
select * from t where id in
(select min(id)as id from t group by CLASSNO,SPOTNAME)

27,579

社区成员

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

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