万维景盛

万维景盛官网
  • q***919 9:10:09 购买 卡密:BaCodeB
  • 1***588 8:44:17 create 虚机:HCU1
  • 1***588 8:44:09 下单 虚机:HCU1
  • 1***588 8:41:20 create 虚机:HCU1
  • 1***588 8:41:12 下单 虚机:HCU1
  • o***888 20:56:25 create 虚机:HCU1
  • o***888 20:50:20 下单 虚机:HCU1
  • 1***588 18:08:58 购买 卡密:BaCodeB
  • 1***588 17:38:14 create 虚机:HCU1
  • 1***588 17:38:07 下单 虚机:HCU1
  • 1***588 17:37:54 购买 卡密:BaCodeB
  • h***826 16:35:31 购买 卡密:BaCodeB
  • q***253 16:30:19 续费 域名:domcom
  • q***253 16:30:14 续费 虚机:domcom
  • u***rss 16:25:58 购买 虚机:xgyx1g_w
  • u***rss 16:25:09 新购 虚机:xgyx1g_w
  • 1***588 15:01:02 购买 卡密:BaCodeB
  • 2***656 14:08:57 续费 虚机:HCM1S
  • 2***656 14:06:41 续费 虚机:HCM1S
  • m***now 13:49:00 续费 虚机:HCU1

sql server怎么删除某一个或多个字段重复的记录?

有时sql server数据库表的记录中,存在一些重复的值,而这些记录却不一定每一个字段都重复,我们根据实际情况决定排重的条件,可以是一个字段,也可以是多个字段,然后将筛选出来的结果进行计数和删除。万维景盛提供阿里云服务器代购服务,如果您通过我司,可以享受折上折优惠,同时免费享受全能运行环境和豪华虚拟主机控制面板。 

思路原理:

逻辑很简单,第一步就是把重复条数大于1的全部都查出来。

SELECT * FROM TableName
WHERE RepeatFiled IN (
	SELECT RepeatFiled
	FROM TableName
	GROUP BY RepeatFiled
	HAVING COUNT(RepeatFiled) > 1
	AND
	ID NOT IN (
		SELECT MIN(ID)
		FROM TableName
		GROUP RepeatFiled
		HAVING COUNT(RepeatFiled) > 1	
	)
)

第二步:删除重复记录,只保留一条

delete FROM TableName
WHERE RepeatFiled IN (
	SELECT RepeatFiled
	FROM TableName
	GROUP BY RepeatFiled
	HAVING COUNT(RepeatFiled) > 1
	AND
	ID NOT IN (
		SELECT MIN(ID)
		FROM TableName
		GROUP RepeatFiled
		HAVING COUNT(RepeatFiled) > 1	
	)
)

实战分析:

1、查找表中多余的重复记录,重复记录是根据单个字段(bid)来判断

 select 
* from [business]
where bid in (select bid from [business] group by bid having count(bid) 
> 1)

 2、删除表中多余的重复记录,重复记录是根据单个字段(bid)来判断,只留有rowid最小的记录 

delete 
from [business] where bid in (select bid from [business] group by bid having 
count(bid) > 1)
and rowid not in (select min(rowid) from [business] group by bid having count(bid 
)>1)

3、查找表中多余的重复记录(多个字段) 

select * from [business] a where (a.bid,a.seq) in (select bid,seq from [business] group by bid,seq having 
count(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 

delete from [business] a where (a.bid,a.seq) in (select bid,seq from [business] group by bid,seq having count(*) > 1) and rowid not in (select min(rowid) from 
[business] group by bid,seq having count(*)>1)


另一种简单方法应用举例:

select * from Sys_RlReport WHERE Id  NOT IN  (SELECT MIN(Id) FROM Sys_RlReport  GROUP BY employeename,bus) order BY employeename,bus
DELETE Sys_RlReport WHERE Id NOT IN (SELECT MIN(Id) FROM Sys_RlReport GROUP BY employeename,bus)
select * from [dbo].[Cards]  WHERE Id  NOT IN  (SELECT MIN(Id) FROM [dbo].[Cards]   GROUP BY cardno)  order by id
delete from [dbo].[Cards]  WHERE sysId  NOT IN  (SELECT MIN(sysId) FROM [dbo].[Cards]   GROUP BY cardno)



来源:万维景盛
日期:2018/2/24

打印 】 
上一篇:sql server 将日期和数字拼接成字符串解决从字符串转换日期和/或时间时,转换失败。
下一篇:jQuery通过点击表格(table)行(tr)实现选中本行中的Input checkbox
  >> 相关文章
  没有相关文章。
会员 客服 充值 工单
Top

客服热线

010-57180806

18610695105

客服QQ

请拨总机 010-57180806

咨询售后问题建议 提交工单