sql 数据去重并且保留一条(在一定的时间范围随机获取时间)

SQL数据更新与去重
本文介绍了一种使用SQL更新特定字段并确保数据唯一性的方法,同时提供了删除重复记录的解决方案,以保持数据库表的整洁。
-- 将lmt作为唯一标识确保唯一

update SWS_ST_SPB_P set lmt = t.lmt
from 
SWS_ST_SPB_P s,
(
SELECT stcd, mpcd, tm, v1, v2, v3, r1, r2, r3,  
DATEADD(second, ABS(CHECKSUM(NEWID())) % DATEDIFF(second,'00:00','23:59'), CONVERT(char(20),tm,20) ) as lmt
from SWS_ST_SPB_P s
) t
where s.stcd = t.stcd and s.mpcd = t.mpcd and s.tm = t.tm 

-- 重复数据只保留一条

DELETE from SWS_ST_SPB_P where 
stcd in (SELECT stcd from SWS_ST_SPB_P GROUP BY stcd, mpcd, tm HAVING count(*)>1)
and tm  in (SELECT tm from SWS_ST_SPB_P GROUP BY stcd, mpcd, tm HAVING count(*)>1)
and mpcd  in (SELECT mpcd from SWS_ST_SPB_P GROUP BY stcd, mpcd, tm HAVING count(*)>1)
and lmt not in (SELECT max(lmt) from SWS_ST_SPB_P GROUP BY stcd, mpcd, tm HAVING count(*)>1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值