SQL去除重复记录(七种)

话不多说,请看代码:

if not object_id('Tempdb..#T') is null drop table #T Go Create table #T([ID] int,[Name] nvarchar(1),[Memo] nvarchar(2)) Insert #T select 1,N'A',N'A1' union all select 2,N'A',N'A2' union all select 3,N'A',N'A3' union all select 4,N'B',N'B1' union all select 5,N'B',N'B2' Go

--I、Name相同ID最小的记录(推荐用1,2,3),保留最小一条

方法1:

delete a from #T a where  exists(select 1 from #T where Name=a.Name and ID<a.ID)

方法2:

delete a from #T a left join (select min(ID)ID,Name from #T group by Name) b on a.Name=b.Name and a.ID=b.ID where b.Id is null

方法3:

delete a from #T a where ID not in (select min(ID) from #T where Name=a.Name)

方法4(注:ID为唯一时可用):

delete a from #T a where ID not in(select min(ID)from #T group by Name)

方法5:

delete a from #T a where (select count(1) from #T where Name=a.Name and ID<a.ID)>0

方法6:

delete a from #T a where ID<>(select top 1 ID from #T where Name=a.name order by ID)

方法7:

delete a from #T a where ID>any(select ID from #T where Name=a.Name) select * from #T

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

时间: 2024-09-20 06:05:29

SQL去除重复记录(七种)的相关文章

sql去除重复记录问题,要求只用一条select语句

问题描述 sql去除重复记录问题,要求只用一条select语句 我有个表,有些记录属于部分重复,像根据时间去掉重复记录比如这个表: t1 t2 小明 2015-06-25小明 2015-09-21小红 2015-03-01小花 2015-03-01小白 2015-03-01 里面的小明那条记录,我只想保留2015-09-21这条最新的记录. 麻烦的是,我只能用一条select语句,不能把另一条记录删掉.求解 解决方案 SELECT a.* FROM table1 a WHERE NOT EXIS

sql 去除重复记录的语句

sql 去除重复记录的语句 表A: ID,Name 表B: ID,AID,Value   select case when a.name='ccc' then null else a.name end name,b.value from 表A a,表B b where a.ID=b.AID select nullif(a.name,'ccc') name ,b.value from 表A a,表B b where a.ID=b.AID 生成测试数据表: [tb] IF OBJECT_ID('[t

SQL查询重复数据与去除重复记录语句

例如:查询重复2次的数据并列出  代码如下 复制代码 select * from park_room where parkNum in ( select parkNum from park_room group by parkNum having count(parkNum) > 1 ) order by parkNum字段信息说明: park_room--停车位表 parkNum--车位号 例子 去除重复记录  代码如下 复制代码 SELECT COUNT(distinct parkNum)

sql 去除重复数据(多字段)

问题描述 sql 去除重复数据(多字段) 我现在有个表 表里面有ID No,Pass 然后根据No,Pass相同的数据,保留Max(ID)数据,删除其他,如何做? 我是这么做的,不知道行不行 delete Min(ID),CAST(No AS VARCHAR)+CAST(Pass AS VARCHAR) from Table group by No, Pass having count(*) > 1 解决方案 可以用distinct或者group by一下 解决方案二: 试一下 DELETE F

多表查询去除重复记录

多表查询去除重复记录 首先关于sql  多表查询去除重复记录我们就可以想到用group by 或distinct 再着想到inner left 等, 下面来看看个实例 看一个distinct 实例 现在将完整语句放出: select *, count(distinct name) from table group by name 结果:    id name count(distinct name)    1 a 1    2 b 1    3 c 1 最后一项是多余的,不用管就行了,目的达到.

用excel高级筛选中选择不重复记录两种方式的差异图解

  excel中高级筛选中选择不重复记录两种方式的差异 高级筛选分为两种方式 在原有区域显示筛选结果 将筛选结果复制到其他位置 在原有区域显示筛选结果被筛选掉的行只是被隐藏了 第二种方式 将筛选结果复制到其他位置 被筛选掉的行已经是被删除的 选中数据区域 观察这个数据区域中有两个行是有重复的 并且分别出现过两次 而且是挨着的 鼠标点按a1单元格 拖动鼠标到e25单元格 松开鼠标 点击菜单栏 数据 筛选 高级筛选命令 在弹出的高级筛选对话框的方式 选择为将筛选结果复制到其他位置 点击复制位置后面的

sql 删除重复记录语句收藏

sql 删除重复记录语句收藏 删除重复记录的题目.现给出解决此题的答案,如下: select distinct * into Temp from Student truncate table Student insert Student select * from Temp drop table Temp --至此删除了重复的数据. --显示删除后的结果 select * from student 思路是先查询出没有重复的数据保存到一个临时的表Temp里面,然后再用truncate关键字删除目标

JavaScript中数组去除重复的三种方法_javascript技巧

废话不多说了,具体方法如下所示: 方法一:返回新数组每个位子类型没变 function outRepeat(a){ var hash=[],arr=[]; for (var i = 0; i < a.length; i++) { hash[a[i]]!=null; if(!hash[a[i]]){ arr.push(a[i]); hash[a[i]]=true; } } console.log(arr); } outRepeat([2,4,4,5,"a","a"

excel中去除重复记录公式

品 编码(把编码为1的统计  出来)       A01 1             A02 1             A03 0             A01 0             A05 1             A01 1             A05 0             A03 0                 要求:          把B列中值为1的,A列中不重复的值 的总数统计出来                             满足这个要求的值是: