| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1507 人关注过本帖
标题:如何把具有相同字段的记录删除,只留一条
只看楼主 加入收藏
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
结帖率:0
收藏
 问题点数:0 回复次数:10 
如何把具有相同字段的记录删除,只留一条

表test里有id,name字段,如果有name相同的记录,想要实现只留下一条,其余的删除.(注name的内容不定,相同的记录数不定)

如何实现

搜索更多相关主题的帖子: 字段 记录 name 删除 test 
2007-01-09 15:51
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

id都不相同吗


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-09 15:59
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 
是的
2007-01-09 16:06
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 

if object_id('s') is not null
drop table s
go
create table s(id int identity,name varchar(10))
insert into s select 'aa'
union all select 'aa'

select * from s
delete from s where not exists ( select 1 from (select max(id) as id ,name from s group by name) m where id=s.id)


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-09 16:16
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 
谢谢,
测试下
2007-01-09 16:25
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 
select * from s
delete from s where not exists ( select 1 from (select max(id) as id ,name from s group by name) m where id=s.id)
老兄,帮我讲解下,我看不太懂
2007-01-09 16:32
accpfriend
Rank: 3Rank: 3
等 级:论坛游侠
威 望:5
帖 子:167
专家分:102
注 册:2006-12-31
收藏
得分:0 
up
2007-01-10 10:27
chenxkfox
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2005-8-18
收藏
得分:0 

期待中。。。。。


,SQL SERVER 群号:17280478
2007-01-10 14:07
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
delete from s  where id  in ( select top 1 id from s s1 where s1.name=s.name )这个简单点

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-10 14:08
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
收藏
得分:0 
以下是引用accpfriend在2007-1-9 16:32:14的发言:
select * from s
delete from s where not exists ( select 1 from (select max(id) as id ,name from s group by name) m where id=s.id)
老兄,帮我讲解下,我看不太懂

exists 我也没用过几次,这语句我是凭感觉写下来的.我只知道exists后面跟的是条件,还有个对于子查询来说非常关键的子查询中的表和外面的表有建立一个关联(我个人觉得,说实话对子查询不是很熟)


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-01-10 14:11
快速回复:如何把具有相同字段的记录删除,只留一条
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018483 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved