sql删除重复数据只保留一条(sqlserver删除重复数据只保留一条,使用ROW_NUM
sql删除重复数据只保留一条(sqlserver删除重复数据只保留一条,使用ROW_NUMER()与Partition By)
1.使用场景: 公司的小程序需要实现一个功能:在原有小程序上,有一个优惠券活动表。 存储着活动产品数据,但因为之前没有做约束,导致数据的不唯一,这会使打开产品详情页时,可能会出现随机显示任意活动问题。 因此需要把它删除掉。
2.那么如何删除呢? 通过翻阅资料发现我们可以通过使用Row_Number()与Partition By 来实现这个功能,我们先看看Row_Number()如何使用,它的语法是:
1).Row_Number() Over ():对结果集的输出进行编号。 具体来说,返回结果集分区内行的序列号,每个分区的第一行从 1 开始。ROW_NUMBER 按顺序对所有行进行编号(例如 1、2、3、4、5)。
如果我们只使用Row_Number() Over( Order By xxx),我们就到序号,如图:
若是在 recovery_model_desc 列上添加 PARTITION BY 子句,当 recovery_model_desc 值发生更改时将重新开始编号。就可以得到如下图结果:
以上都是网上提供的资料,现在,再回到我要解决的问题:
第一步:我们要把活动产品表 XXX_PRODUCT表进行分组:
SELECT UniqueId, PromoteId, ProductId, ROW_NUMBER() OVER ( PARTITION BY PromoteId, ProductId ORDER BY UniqueId DESC) rownum
FROM STAR_PROMOTE_PRODUCT
此处是按产品ID,活动ID进行分区,在每个分区里按UniqueId倒排序(这样我们就可以保留重复数据中最新的,删除旧的),并把每个分区各自按顺序排列生成的行序号RowNum。
第二步,我们再取出要删除的唯一键
SELECT temp.UniqueId FROM (
SELECT UniqueId, PromoteId, ProductId, ROW_NUMBER() OVER ( PARTITION BY PromoteId, ProductId ORDER BY UniqueId DESC) rownum
FROM STAR_PROMOTE_PRODUCT) RowNum
FROM STAR_PROMOTE_PRODUCT
最后,我们再删除该唯一键
DELETE FROM 活动产品表
WHERE UniqueID IN(
SELECT temp.UniqueId FROM (
SELECT UniqueId, PromoteId, ProductId, ROW_NUMBER() OVER ( PARTITION BY PromoteId, ProductId ORDER BY UniqueId DESC) RowNum
FROM 活动产品表) as temp
WHERE temp.rownum > 1)
注意这里的temp.rownum > 1,表示删除序号大于1的记录,因为重复可能有多条。因为>1就保留
最新的一条记录,删除其它旧的重复记录。
-
- 480分理科能上哪些公办大学(2022年理科生480分能去什么本科公办院校?)
-
2024-01-09 01:35:51
-
- 酥油茶好喝吗 喷香可口的酥油茶,跟奶茶有什么区别?看完这篇文章你就懂了
-
2024-01-09 01:33:36
-
- 情人节收到礼物怎么发朋友圈?来看看吧!
-
2024-01-09 01:31:21
-
- 平板支撑正确姿势(平板支撑的正确姿势,注意5个细节,完善动作质量)
-
2024-01-09 01:29:06
-
- 煤气灶打不着火怎么办没有火花声(煤气灶没有哒哒声打不着火怎么办?)
-
2024-01-09 01:26:51
-
- 流鼻血的正确止血方法(鼻出血莫相信“土方”止血!2种科学方法教你正确止血
-
2024-01-09 01:24:37
-
- 六一说说句子(特别沙雕的六一文案)
-
2024-01-08 13:17:39
-
- 金蝉养殖要点有哪些?大棚金蝉养殖技术
-
2024-01-08 13:15:25
-
- 鸡肉粉比鸡精有营养
-
2024-01-08 13:13:10
-
- 大便干燥吃什么好快速排便(大便干燥、肠道不通?送你一个中成药,润肠通便,
-
2024-01-08 13:10:55
-
- 吃维生素c有什么好处(维生素C长期服用有哪些好处,大量服用有什么坏处?看药
-
2024-01-08 13:08:40
-
- 怎样区分上下联的技巧(年年贴春联,上下联怎么区分?你家真的贴对了吗?)
-
2024-01-08 13:06:26
-
- 怎么安装固态硬盘系统(教你固态硬盘安装详细教程,简单易学很实用)
-
2024-01-08 13:04:11
-
- 鱼头泡饼的饼怎么和面?方法在这里,需要的别错过了!
-
2024-01-08 13:01:56
-
- 英语考试有哪些小技巧(英语考试小技巧:试卷做得太慢怎么办?)
-
2024-01-08 12:59:41
-
- 奄怎么读 「每日一字」 奄
-
2024-01-08 12:57:27
-
- word怎么从第三页开始编页码 ?原来还能这样设置页码!论文不用愁了
-
2024-01-07 23:18:44
-
- 月经干净几天容易怀孕 备孕女人注意这3件事
-
2024-01-07 23:16:29
-
- 水空调原理是什么(水空调是啥?)
-
2024-01-07 23:14:14
-
- 如何提高数学成绩方法高中?
-
2024-01-07 23:11:59