分享SQL Server删除重复行的6个方法

1.如果有ID字段,就是具有唯一性的字段


代码如下:

delect table where id not in (
select max(id) from table group by col1,col2,col3...
)

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

2. 如果是判断所有字段也可以这样


代码如下:

select * into #aa from table group by id1,id2,....
delete table
insert into table
select * from #aa

3. 没有ID的情况


代码如下:

select identity(int,1,1) as id,* into #temp from tabel
delect # where id not in (
select max(id) from # group by col1,col2,col3...)
delect table
inset into table(...)
select ..... from #temp

4. col1+','+col2+','...col5 联合主键


代码如下:

select * from table where col1+','+col2+','...col5 in (
select max(col1+','+col2+','...col5) from table
where having count(*)>1
group by col1,col2,col3,col4
)

group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同。

5.


代码如下:

select identity(int,1,1) as id,* into #temp from tabel
select * from #temp where id in (
select max(id) from #emp where having count(*)>1 group by col1,col2,col3...)

6.


代码如下:

select distinct * into #temp from tablename
delete tablename
go
insert tablename select * from #temp Sqlclub
go
drop table #temp

以上就是SQL Server删除重复行的方法介绍。

(0)

相关推荐

  • 删除DataTable重复列,只删除其中的一列重复行的解决方法

    vs2005针对datatable已经有封装好的去重复方法: 复制代码 代码如下: //去掉重复行 DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { "name", "code" }); 此时table 就只有name.code无重复的两行了,如果还需要id值则 table = dv.ToTable(true, new string[] { "id",

  • SQLServe 重复行删除方法

    Microsoft SQL Server 表不应该包含重复行和非唯一主键.为简洁起见,在本文中我们有时称主键为"键"或"PK",但这始终表示"主键".重复的 PK 违反了实体完整性,在关系系统中是不允许的.SQL Server 有各种强制执行实体完整性的机制,包括索引.唯一约束.主键约束和触发器. 尽管如此,在某些情况下还可能会出现重复的主键;如果出现此类情况,就必须清除重复主键.出现重复主键的情形之一是,在 SQL Server 外部的非关系数

  • 批处理 删除重复行的代码

    复制代码 代码如下: @echo off :: 删除重复的行,但不能保留空行 :: 对不符合变量命名规则.变量个数超过限制的文本都无法正确处理 :: (echo 清除重复行后的文件内容:& echo.)>str_.txt for /f "delims=" %%i in (test.txt) do ( if not defined %%i set %%i=A & echo %%i>>str_.txt) start str_.txt

  • sqlserver利用存储过程去除重复行的sql语句

    还是先上代码吧 ,可以先看 SQL语句去掉重复记录,获取重复记录 复制代码 代码如下: ALTER procedure [dbo].[PROC_ITEMMASTER_GETUNIQUE] @PAGEINDEX INT,@uid int,@itemnumber varchar(50) AS begin tran --开始事务 drop table [ItemMaster].[dbo].[testim] --删除表 --把不重复记录转存到testim中 select * into [ItemMast

  • sql里将重复行数据合并为一行数据使用逗号进行分隔

    一.定义表变量 复制代码 代码如下: DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); 复制代码 代码如下: insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @

  • 用vbscript实现从文本文件中删除所有重复行的代码

    问: 您好,脚本专家!如何从文本文件中删除所有重复行? -- SW 答: 您好,SW.您知道,成为一名脚本专家便意味着开始永无止境地寻找给定问题的最终解决方案.(或者至少在我们的经理问为什么我们似乎从未真正完成什么时,我们是这么告诉他的:"老板,永无止境的寻找过程需要时间!")这就是为什么我们很高兴看到您的问题的原因.不久前 我们回答了一个关于从文本文件中删除重复名字的类似问题.我们想到的解决方案十分简单而且效果不错:只是我们不确定那是最佳解决方案.现在,很感谢您的问题,我们可以再次尝

  • 删除Table表中的重复行的方法

    利用SQL Server 2005的新功能NOW_NUMBER和CTE可以很好的实现. 举例说明如下: 建立测试数据: 复制代码 代码如下: create table Dup1 ( Col1 int null, Col2 varchar(20) null ) insert into Dup1 values (1, 'aaa'), (2, 'aaa'), (2, 'aaa'), (2, 'aaa'), (3, 'bbb'), (3, 'bbb'), (4, 'ccc'), (4, 'ddd'),

  • 分享SQL Server删除重复行的6个方法

    1.如果有ID字段,就是具有唯一性的字段 复制代码 代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同. 2. 如果是判断所有字段也可以这样 复制代码 代码如下: select * into #aa from table group by id1,i

  • SQL SERVER 删除重复内容行

    对于重复行删除的问题,网上很难找到合适的答案,问问题的不少,但在搜索引擎中草草地看了一下前面的记录都没有解决方案. 其实这个问题可以很华丽的解决. 1.如果这张表没有主键(或者相同的行并没有不相同的内容列),则需要新建一个自增列,用来区分不同列.例如 复制代码 代码如下: alter table [tablename] add [TID] int IDENTITY(1,1) 就是增加一个自增量的临时列TID. 为啥要用SQL语句?如果超过几十万行的话用SQL SERVER企业管理器的设计界面修改

  • SQL Server 2008 R2登录失败的解决方法

    为大家分享SQL Server 2008 R2登录失败的解决方法 1.启动SQL Server 2008 Management Studio,会看到 2.里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Server 身份验证. 它们有什么区别: Windows 身份验证是指:你可以使用你电脑Windows系统的用户名和密码进行登入.如果你的电脑没有设置密码,那么就不需要输入用户名和密码,直接点击连接就可以登入. 我们一般使用第二种身份验证:

  • SQL Server删除表中的重复数据

    添加示例数据 create table Student( ID varchar(10) not null, Name varchar(10) not null, ); insert into Student values('1', 'zhangs'); insert into Student values('2', 'zhangs'); insert into Student values('3', 'lisi'); insert into Student values('4', 'lisi')

  • sql server删除前1000行数据的方法实例

    近日,sql数据库入门学习群有朋友问到,利用sql如何删除表格的前1000行数据,是否可以实现? 如果是oracle数据库管理软件,实现起来相对简单多了 delete from 表名 where rownum<=1000; 那sql server数据库管理软件呢? sql server里没有rownum功能,小编尝试用select top 先查询看下结果集,select * from 表名: delete from 表名 where 条码 in (select top 10 条码 from 表名

  • SQL Server中数据行批量插入脚本的存储实现

    无意中看到朋友写的一篇文章"将表里的数据批量生成INSERT语句的存储过程的实现".我仔细看文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数据行稍微大些性能会受影响的.所在公司本来就存在第二个版本的类似实现,但是是基于多行模式的,还是需要手工添加UNAION ALL来满足多行模式的插入.看到这篇博文和基于公司数据行批量脚本的存储的缺点,这次改写和增强该存储的功能. 本存储运行于SQL Server 2005或以上版本,T-SQL代码如下: IF OBJECT_I

  • SQL Server删除表及删除表中数据的方法

    本文介绍SQL Server中如何删除表,如何删除表中的数据.在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢? SQL Server,我们现在基本上使用的最古老的版本应该是SQL Server 2000吧,应该没有更早的版本了吧?!从SQL Server 2000开始,到SQL Server 2005,2008,2012等,T-SQL的处理能力越来越强.今天我们就来说说如何使用T-SQL脚本来删除表,以及删除表中的数据. 删除表和删除表数据这是

  • MySQL 如何查找删除重复行

    目录 一.如何查找重复行 二.如何删除重复行 三.如何查找多列上的重复 四.错误的查询语句 五.几种正确的方法 一.如何查找重复行 第一步是定义什么样的行才是重复行.多数情况下很简单:它们某一列具有相同的值.本文采用这一定义,或许你对"重复"的定义比这复杂,你需要对sql做些修改. 本文要用到的数据样本: create table test(id int not null primary key, day date not null); insert into test(id, day

  • mysql删除重复行的实现方法

    表relation create table relation( id int primary key auto_increment, userId int not null, fanId int not null ); 插入几条数据 insert into relation(userId,fanId) values(1,1) ,(1,1) ,(1,1), (2,2),(2,2) ,(3,3),(3,3); 表中的数据 id userId fanId 1 1 1 2 1 1 3 1 1 4 2

  • Sql Server中实现行数据转为列显示

    目录 1.效果如下 2.解决方案 3.代码如下 场景:行数据的某列值想作为字段列显示 1.效果如下 2.解决方案 使用pivot进行行转列,以及结合分组 3.代码如下 select * from( select DeptName,InputCode from FWD_Department group by DeptName,InputCode ) as a pivot( max(InputCode) for DeptName in([随访中心],[全院],[家庭化产房],[妇科二],妇科一) )

随机推荐