SQL 如何删除数据表中重复的数据?
来源:互联网 发布:相机内存卡数据恢复 编辑:程序博客网 时间:2024/06/10 07:30
【引用:猛犸技术文章摘要】
经测试,方法二可成功删除数据,方法一、三 删除数据失败。请路过的朋友,指点迷津。。。
问题:一个表有自增的ID列,表中有一些记录内容重复,也就是说这些记录除了ID不同之外,其他的信息都相同。需要把重复的记录保留一条,剩下的删除
方法一:还是2000年的时候一位Oracle DBA叫m.l发给技术部全体的(可惜原始邮件找不到了,要不然我当文物发给大家):
delete from Score
where [sid] not in (
select min([sid])
from Score
group by [sid],[sname],[score])
方法二:z.ben在网络上搜出来的:
--删除相同城市下的相同行政区
delete a from Score a
where a.sid>(
select min(sid) from Score b
where a.sname=b.sname and a.score=b.score)
方法三:使用sql 2005新增的row_number()功能和with关键字,我是从赵立东那里学来的。
print('删除Score表中重复的记录')
;WITH a AS (
SELECT ROW_NUMBER() OVER (PARTITION BY [sid],[sname],[score]
ORDER BY [sid],[sname],[score]) AS rn,*
FROM Score
)
delete from a WHERE a.rn>1
------------------------------------------------------------------------------
附录:数据库表脚本
USE [DBtest]
GO
/****** Object: Table [dbo].[Score] Script Date: 01/13/2010 23:47:56 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Score](
[sid] [int] IDENTITY(1,1) NOT NULL,
[sname] [nchar](10) NOT NULL,
[score] [nchar](10) NOT NULL,
CONSTRAINT [PK_Score] PRIMARY KEY CLUSTERED
(
[sid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
数据填充:
1 aa bb 2bb cc 3 cc dd 4 dd ee 5 ee ff 8 aa bb 9 aa
bb
- SQL 如何删除数据表中重复的数据?
- 查询和删除数据表中重复数据的sql
- 如何删除数据表中重复的记录
- 如何查询数据表中重复的数据?
- 如何删除数据表中重复数据(二)
- 如何删除SQL中重复的数据行
- 一道关于删除数据表中重复数据的笔试题
- 一道关于删除数据表中重复数据的笔试题
- oracle删除数据表中重复数据
- SQL如何删除重复的数据行
- SQL如何删除重复的数据行
- 删除数据表DATATABLE里重复的数据
- 删除SQL表中重复的数据
- 删除表中重复数据的sql
- 如何删除SQL重复数据
- 如何删除数据库中重复的数据
- sqlserver中删除数据表中重复的数据或是某一列中重复的字段,紧保留一条数据
- 如何删除数据表中的重复数据(各种数据库)
- MSChart使用导航之开发
- vs2008 std::fstream以及std::ifstream打开中文路径名失败的解决方法
- ref 用法
- 谈谈目前国内Silverlight项目开发的分工形式
- 《WCF技术内幕》翻译35:第2部分_第6章_通道:通道功能
- SQL 如何删除数据表中重复的数据?
- Google走了,留给我们什么?
- Discuz7.2漏洞
- 国考公务员失败
- 微软造的还原精灵EWF(Enhanced Write Filter)
- 我翻译的ServerXMLHttp中文手册(1)
- setdefaultencoding
- ASP.NET封面图片的上传
- 我翻译的ServerXMLHttp中文手册(2)