SQL 如何删除数据表中重复的数据?
【引用:猛犸技术文章摘要
】
经测试,方法二可成功删除数据,方法一、三 删除数据失败。请路过的朋友,指点迷津。。。
问题:一个表有自增的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
2
bb
cc
3
cc
dd
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
选择自 CSDN
SQL语句导入导出大全
/******* 导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'
/*********** 导入Excel
SELECT *
from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\tes ......
SQL Server里的 ISNULL 与 Oracle 中的 NULLIF不同:
SQL Server 中有两个参数,语法:
ISNULL(check_expression, replacement_value)
check_expression 与 replacement_value 数据类型必须一致
如果 check_expression 为 NULL,则返回 replacement_v ......
Sql Server中的日期与时间函数
1. 当前系统日期、时间
select getdate()
2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
......
转载自:http://www.cnblogs.com/leonbao/archive/2008/03/07/1094821.html
关于SQL Server数据库设计的感悟,请指教
有问题的时候,我经常回来博客园寻找答案,久而久之,总结了一些东西。
妄自菲薄,请大家多指出错误,并给出意见
数据库设计三范式基本原则
第一范式:数据库表中的字段都是单一属性的,不可再分。这 ......