SqlServer中根据某几列获取重复的数据将其删除并保留最新一条
有时候,我们某个数据表中,可能有几列的数据都是一样的,此时我们可能想查询出这几列数据相同的所有数据行,并保留最新一条,将其他重复的数据删除。
1、ROW_NUMBER函数
假设我们有如下数据表:
此时我们可以使用ROW_NUMBER
函数,根据某几列查询出重复数据的新的排序列,该排序列就是根据某几列重复数据生成的序号(从1开始),如下所示OrderNo
就是我们新生成的列:
--根据Name和Age这2个字段进行查询并获得新的列OrderNo(OrderNo就是根据Name和Age重复数据生成的序号,从1开始),同时按照CreateTime降序排列
SELECT *,OrderNo=ROW_NUMBER() OVER(PARTITION BY [Name],Age ORDER BY CreateTime DESC)
FROM dbo.TestTb
2、删除数据
有了上述代码中的排序列,我们就可以知道,OrderNo
的值>1的数据行都是我们需要删除的数据,完整代码如下所示:
--删除表TestTb中字段Name和Age同时重复的数据,并保留最新一条
DELETE FROM dbo.TestTb WHERE Id IN(
--根据Name和Age这2个字段查询出重复的数据
SELECT Id FROM
(
--根据Name和Age这2个字段进行查询并获得新的列OrderNo(OrderNo就是根据Name和Age重复数据生成的序号,从1开始),同时按照CreateTime降序排列
SELECT *,OrderNo=ROW_NUMBER() OVER(PARTITION BY [Name],Age ORDER BY CreateTime DESC)
FROM dbo.TestTb
) Tmp
WHERE OrderNo>1
);
执行删除:
删除后的:
SqlServer中根据某几列获取重复的数据将其删除并保留最新一条的更多相关文章
- SQLServer中查询的数字列前面补0返回指定长度的字符串
SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...
- C#中,使用正则表达式匹配获取所需数据
.NET中,使用正则表达式匹配获取所需数据 需求:获取一串字符串中,正则匹配出需要的数据. 例如以下字符串: string temp ="ErrorCode:-1,Message:{&quo ...
- Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤
总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1 from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...
- 关于Vue中,在方法中使用(操作)子组件获取到的数据
已知,子组件通过props获取父组件传过来的数据,而这个数据是无法在created.mounted生命周期中使用的,只能在beforeUpdated或者updated获取到: 但是如果我们要使用这个数 ...
- Sqlserver中PIVOT行转列透视操作
创建表: IF OBJECT_ID('T040_PRODUCT_SALES') IS NOT NULL DROP TABLE T040_PRODUCT_SALES create table T040_ ...
- sqlserver中sp_executesql使用实例(获取动态sql输出结果)
语法 sp_executesql [ @stmt = ] stmt [ {, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,. ...
- python 数组中如何根据值,获取索引,如何根据索引删除值 , 以及如何根据值删除值
假设有一数组 s = [1,2,3,4,5,6,7,8,9] (1)如何根据值获取索引 ,如果值为5 , 那对应的索引为? (2)如何根据索引删除值 , 删除数组中索引5对应的值: (3)根据数组中的 ...
- SQL循环遍历,删除表里某一列是重复的数据,只保留一条。
DECLARE @tempId NVARCHAR(Max), @tempIDD uniqueidentifier WHILE EXISTS ( SELECT UserId FROM Users Gro ...
- mysql 删除商品名字重复数据,同时保留最新一条
delete goods where goods_id in (SELECT goods_id FROM goodswhere goods_name in (select goods_name fro ...
- [转]python中pandas库中DataFrame对行和列的操作使用方法
转自:http://blog.csdn.net/u011089523/article/details/60341016 用pandas中的DataFrame时选取行或列: import numpy a ...
随机推荐
- java——棋牌类游戏五子棋(singlewzq1.0)之一
这是本人最近一段时间写的五子棋的java代码,大体框架都实现了,一些细节还需要优化. package basegame; import java.awt.Color; import java.awt. ...
- Linux之JSON处理工具jq
一个灵活的轻量级命令行JSON处理器 补充说明 jq 是 stedolan 开发的一个轻量级的和灵活的命令行JSON处理器,源码请参考 jq 项目主页 jq 用于处理JSON输入,将给定过滤器应用于其 ...
- golang之项目部署
介绍 Go 语言可以使用内置命令行工具 go build 编译生成可执行文件.自 Go1.5 版本开始实现自举后,交叉编译也很方便,只需使用 GOOS.GOARCH 环境变量指定目标平台和架构. 部署 ...
- 2022 Hangzhou Normal U Summer Trials
Subarrays 给定一个长度为n的由正整数组成的序列,请你输出该序列中子段和能被\(k\)整除的所有符合要求的子段数量 题解:组合计数 + 前缀和 + 思维 \[sum[l,r]\ \ mod\ ...
- 【懒狗必备】用bat命令解放双手
背景说明 每天上班,都需要打开本地的一些服务,比如redis.zk等. 作为懒狗,需要会利用工具. 于是我写了一个bat脚本,幼儿园水平: chcp 65001 title 一键启动本地环境脚本 st ...
- java/spring项目打成jar包供第三方引用方案
分类 单独工具类 比如StringUtils 注入类工具类 实现 单独工具类 将项目打jar包 项目结构 开始打包: 在目标项目中pom引用直接使用 注入类工具类 当我们想要利用SpringBoot封 ...
- Python 潮流周刊#80:Django 项目性能调优(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 编译器-FOLLOW集合
语法分析器的两个重要函数 FIRST和FOLLOW 一.FOLLOW的定义 在句型中紧跟在A右边的终结符号的集合 如果A是某些句型的最右符号,那么$在FOLLOW(A)中 A:非终结符 二.计算方法 ...
- DDPM论文解读
DDPM(Denoising Diffusion Probabilistic Models) 论文研究背景 扩散概率模型(Denoising Diffusion Probabilistic Model ...
- docker containner挂掉,无法exec进入bash,如何修改文件的终极解决方法
场景: Nginx在bash里面配置的时候挂掉了,然后docker start不起来,exec bash进不去,造成无法再改里面的文件了 解决方法: 1,docker ps –a 可以查到所有dock ...