小技巧教您轻松删除SQL Server重复行

数据库 SQL Server
SQL Server数据库中如果出现了重复行,应该如何处理呢?下文对删除重复行问题进行了详尽的说明,希望对您能够有所帮助。

SQL Server重复行问题相信大家都遇到过,下面就教您一个好方法,助您轻松删除SQL Server重复行,如果您遇到过SQL Server重复行问题,不妨一看。

1、如果这张表没有主键(或者相同的行并没有不相同的内容列),则需要新建一个自增列,用来区分不同列。例如
alter   table [tablename] add [TID] int IDENTITY(1,1)
就是增加一个自增量的临时列TID。
为啥要用SQL语句?如果超过几十万行的话用SQL SERVER企业管理器的设计界面修改通常会超时。

2、然后就是关键了。给个例子就是我手上正要处理的IP地址所在地清单。近40万条数据,有SIP和EIP(开始IP和结束IP)记录重复,重复条数大概占1/5左右。对此情况用简单的一条SQL命令就搞定:
delete from query_IP where TID not in (select max(TID) from query_IP group by SIP,EIP)
就是将SIP和EIP分组,取得同样分组的***的TID值。

然后将原表中不在其中的内容(也就是同样分组的重复内容中更小的ID内容)删除即可。用这种思路可以延伸出很多SQL解题的方式。比如说某个用户登陆表,要查看每个用户最近的登陆记录。

很优雅的一条查询语句:
Select * from LoginLog where ID in (select max(ID) from LoginLog group by UserID)

SQL强大之极,许多复杂的需求往往可以合并到一条SQL语句查询中实现。因此在我的程序中除了UPDATE/INSERT等操作需要事务支持,或是记录量实在太大需要分页或临时表。通常都用一条SQL语句来实现。比如说select *,(select count(*) from xxx where xxx=t.ID) from t where...。这样就可以在SELECT语句中获取关联的统计项,对于中小型系统尤其实用。

 

 

【编辑推荐】

启动停止Sql Server服务的实现方法

Sql server DAC连接的问题

SQL Server导出导入某数据库

SQL Server中文乱码问题的解决

SQL Server死锁的解除方法

责任编辑:段燃 来源: 互联网
相关推荐

2010-09-08 09:41:37

SQL删除注册表

2010-09-13 13:25:44

sql server外

2010-10-27 16:56:05

Oracle重复记录

2010-10-21 14:06:22

定义SQL Serve

2010-09-27 16:48:07

sql server时

2010-09-14 13:22:51

sql server备

2010-10-21 15:57:37

SQL Server无

2010-10-19 16:58:34

SQL Server日

2010-09-25 09:34:05

sql server主

2010-10-21 16:59:37

SQL Server创

2010-10-21 16:59:37

SQL Server创

2010-09-16 15:48:03

SQL Server系

2009-04-20 15:54:04

SQL Server重复行

2010-10-22 16:29:11

SQL Server删

2010-09-25 10:41:34

SQL SERVER主

2010-09-16 16:29:15

sql server表

2010-10-19 13:05:31

Sql Server远

2010-09-13 16:19:47

Sql Server数

2010-06-28 12:46:09

SQL Server

2010-09-27 16:32:46

SQL Server日
点赞
收藏

51CTO技术栈公众号