有时候,我们某个数据表中,可能有几列的数据都是一样的,此时我们可能想查询出这几列数据相同的所有数据行,并保留最新一条,将其他重复的数据删除。

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中根据某几列获取重复的数据将其删除并保留最新一条的更多相关文章

  1. SQLServer中查询的数字列前面补0返回指定长度的字符串

    SQLServer中查询的数字列前面补0返回指定长度的字符串: 如: 角本如下: /****** Script for SelectTopNRows command from SSMS ******/ ...

  2. C#中,使用正则表达式匹配获取所需数据

    .NET中,使用正则表达式匹配获取所需数据 需求:获取一串字符串中,正则匹配出需要的数据. 例如以下字符串: string temp ="ErrorCode:-1,Message:{&quo ...

  3. Oracle-一张表中增加计算某列值重复的次数列,并且把表中其他列也显示出来,或者在显示过程中做一些过滤

    总结: 1.计算某列值(数值or字符串)重复的次数 select 列1,count( 列1 or *) count1  from table1 group by 列1 输出的表为:第一列是保留唯一值的 ...

  4. 关于Vue中,在方法中使用(操作)子组件获取到的数据

    已知,子组件通过props获取父组件传过来的数据,而这个数据是无法在created.mounted生命周期中使用的,只能在beforeUpdated或者updated获取到: 但是如果我们要使用这个数 ...

  5. Sqlserver中PIVOT行转列透视操作

    创建表: IF OBJECT_ID('T040_PRODUCT_SALES') IS NOT NULL DROP TABLE T040_PRODUCT_SALES create table T040_ ...

  6. sqlserver中sp_executesql使用实例(获取动态sql输出结果)

    语法 sp_executesql [ @stmt = ] stmt [     {, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,. ...

  7. python 数组中如何根据值,获取索引,如何根据索引删除值 , 以及如何根据值删除值

    假设有一数组 s = [1,2,3,4,5,6,7,8,9] (1)如何根据值获取索引 ,如果值为5 , 那对应的索引为? (2)如何根据索引删除值 , 删除数组中索引5对应的值: (3)根据数组中的 ...

  8. SQL循环遍历,删除表里某一列是重复的数据,只保留一条。

    DECLARE @tempId NVARCHAR(Max), @tempIDD uniqueidentifier WHILE EXISTS ( SELECT UserId FROM Users Gro ...

  9. mysql 删除商品名字重复数据,同时保留最新一条

    delete goods where goods_id in (SELECT goods_id FROM goodswhere goods_name in (select goods_name fro ...

  10. [转]python中pandas库中DataFrame对行和列的操作使用方法

    转自:http://blog.csdn.net/u011089523/article/details/60341016 用pandas中的DataFrame时选取行或列: import numpy a ...

随机推荐

  1. 2025年前端面试准备css篇

    1.css 盒子模型 css包含了内容(content) ,内边距(padding),边框(border),外边距(margin) 等因素. css 标准盒子模型宽包括:margin+border+p ...

  2. Netty+Spring Boot 加持,解锁高性能 Web 应用

    MiniTomcat(https://github.com/daichangya/MiniTomcat) 这个项目是一个基于Netty的Java Web服务器,它提供了从简单HTTP服务器到集成Spr ...

  3. 渗透测试-前端验签绕过之SHA256+RSA

    本文是高级前端加解密与验签实战的第2篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过SHA256+RSA签名来爆破登录. 绕过 根据提示可以看出这次签名用了SHA2 ...

  4. 09C++选择结构(3)——教学

    一.求3个整数中最小值 (第20课 初识算法) 题目:输入三个整数,表示梨的重量,输出最小的数. 方法1:经过三次两两比较,得出最小值. a<=b && a<=c min= ...

  5. flutter问题汇总

    Text文字居中 Text(           'You will need to post a photo before you can play!',           textAlign:  ...

  6. 《Django 5 By Example》读后感

    一. 为什么选择这本书? 本人的工作方向为Python Web方向,想了解下今年该方向有哪些新书出版,遂上packt出版社网站上看了看,发现这本书出版时间比较新(2024年9月),那就它了. 从202 ...

  7. 非root用户使用AntDeploy部署docker

    AntDeploy这个东西非常好用,可以直接将.NET CORE的程序直接发布到docker,刚好我有这个需求,但是程序默认给的账户示例是root账户的,需要对于需要分散开发的同学来说,这个东西风险有 ...

  8. 2024年1月Java项目开发指南7:增删改查与接口测试

    我们之前,是从Controller层写到Service层,然后mapper层. 接下来我们反过来,从mapper层写到Controller层 两种方式都可以,你喜欢就行,甚至你先写service层也可 ...

  9. adduser和addgroup命令讲解

    https://wiki.alpinelinux.org/wiki/Setting_up_a_new_user 在Alpine Linux下创建用户和组命令分别是adduser和addgroup,本文 ...

  10. WorldWind源码剖析系列:WorldWind中的LOD技术

    1. 基本概念: World Wind Tile Structure:是指WW瓦片数据结构. 默认浏览器纹理数据存放在\Cache\Earth\Images\NASA Landsat Imagery\ ...