SQL SERVER删除重复内容行
来源:互联网 发布:伊利亚特知乎 编辑:程序博客网 时间:2024/06/05 07:51
刚解决的小问题,之前也解决过类似的问题,但这次还设计到用SQL语句加一列,平时不常用这种命令,还是记录一下吧。
对于重复行删除的问题,网上很难找到合适的答案,问问题的不少,但在搜索引擎中草草地看了一下前面的记录都没有解决方案。
对于重复行删除的问题,网上很难找到合适的答案,问问题的不少,但在搜索引擎中草草地看了一下前面的记录都没有解决方案。
其实这个问题可以很华丽的解决。
1、如果这张表没有主键(或者相同的行并没有不相同的内容列),则需要新建一个自增列,用来区分不同列。例如
alter table [tablename] add [TID] int IDENTITY(1,1)
就是增加一个自增量的临时列TID。
为啥要用SQL语句?如果超过几十万行的话用SQL SERVER企业管理器的设计界面修改通常会超时。
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内容)删除即可。
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删除重复行
- SQL Server删除重复行
- 删除SQL Server表中的重复行
- SQL Server删除重复行的方法
- 删除 SQL Server 表中的重复行
- 删除重复内容行
- 如何删除 SQL Server 表中的重复行
- 如何删除 SQL Server 表中的重复行
- 如何删除 SQL Server 表中的重复行
- 如何删除 SQL Server 表中的重复行
- 如何删除 SQL Server 表中的重复行(1)
- 如何删除 SQL Server 表中的重复行(2)
- SQL Server中删除重复行的六个常用方法
- 详解如何删除SQL Server表中的重复行
- SQL Server删除重复行的6个方法
- SQL Server删除重复行的6个方法
- SQL Server删除重复行的6个方法
- cisco DHCP实验
- 数据库高并发情况下重复值写入的避免-字段组合约束
- SQL SERVER 的SQL语句优化方式
- 【转自koma】 VC无进程木马下载器源码
- loadrunner
- SQL SERVER删除重复内容行
- MatLab随机数生成函数系列
- JSF 2 简介,第 3 部分: 事件处理、JavaScript 和 Ajax
- 字符串模式匹配KMP算法
- ubuntu netbook remix 体验(2)
- prim经典算法求最小生成树
- 程序员办网站创业,几个问题你想好了吗?
- Extjs的ajax同步请求时post方式参数发送方式
- 经典算法求大范围内素数