SqlServer中根据某几列获取重复的数据将其删除并保留最新一条

这篇具有很好参考价值的文章主要介绍了SqlServer中根据某几列获取重复的数据将其删除并保留最新一条。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

🥇1、ROW_NUMBER函数

假设我们有如下数据表:
SqlServer中根据某几列获取重复的数据将其删除并保留最新一条

此时我们可以使用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

SqlServer中根据某几列获取重复的数据将其删除并保留最新一条


🥈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中根据某几列获取重复的数据将其删除并保留最新一条文章来源地址https://www.toymoban.com/news/detail-860799.html

到了这里,关于SqlServer中根据某几列获取重复的数据将其删除并保留最新一条的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQLServer删除表中重复记录

    转载链接:https://www.bbsmax.com/A/1O5Ee12G57/ 重复记录:有两个意义上的重复记录 一是完全重复的记录,也即所有字段均重复的记录; 二是部分段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。 1、对于第一种重复,比较容易解决,使用 select d

    2024年02月01日
    浏览(39)
  • MySQL 根据多字段查询重复数据 MySQL根据某一个或者多个字段查找重复数据

    在实际的数据库应用中,我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能,让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据,并提供相应的代码示例。 什么是重复数据? 重复数据指的是在

    2024年02月12日
    浏览(26)
  • MySQL 根据多字段查询重复数据

    在实际的数据库应用中,我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能,让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据,并提供相应的代码示例。 什么是重复数据? 重复数据指的是在

    2024年02月06日
    浏览(41)
  • sqlserver 删除用户提示:数据库主体在该数据库中拥有 架构,无法删除

    1.Microsoft SQL Server Management Studio中找到对应数据库-安全性-用户 2.找到对应用户-右键属性-常规,就可以看到该用户的默认架构 3.找到默认架构之后,在架构中双击改架构-搜索-浏览改为db_datawriter-确定  4.接下来可以去用户那里删除用户了

    2024年02月16日
    浏览(32)
  • elasticsearch删除脏数据(根据指定字段删除数据)

    es中出现几条脏数据,现在要把这几条数据直接删掉 找到要删除的脏数据,一般是根据id之类的字段来删除,因为id具有唯一性,其实和mysql差不多 1、先查到该条记录(注意我们这边使用的是 ticketId字段,因为他具有唯一性,方便查询) 返回结果 2、接下来就把 ticketId 为 fd

    2024年02月16日
    浏览(28)
  • pandas删除重复数据

    参数说明如下: subset:表示要进去重的列名,默认为 None。 keep:有三个可选参数,分别是 first、last、False,默认为 first,表示只保留第一次出现的重复项,删除其余重复项,last 表示只保留最后一次出现的重复项,False 则表示删除所有重复项。 inplace:布尔值参数,默认为

    2024年02月12日
    浏览(27)
  • Java通过Lambda表达式根据指定字段去除重复数据(集合去重)

    这里博主给大家封装好了一个工具类,里面有两个方法。 方法一:可以根据指定字段去除重复数据。 方法二:可以获取到重复的数据。 大家在使用过程中直接拷贝下方代码在要去重的类中调用即可。 导入这个工具类后怎么使用呢?我们接着往下看。 List rstList = list.stream()

    2024年02月16日
    浏览(31)
  • Pandas实战100例 | 案例 17: 处理重复数据 - 删除重复行

    案例 17: 处理重复数据 - 删除重复行 知识点讲解 在数据分析过程中,处理重复的记录是一个常见的任务。Pandas 提供了方便的方法来删除重复行,保证数据的准确性和可靠性。 删除所有列重复的行 : 使用 drop_duplicates() 方法可以删除 DataFrame 中所有列值完全相同的重复行。 基于

    2024年01月20日
    浏览(40)
  • 使用 Elasticsearch 进行日志重复数据删除

    作者:来自 Elastic Carly Richmond 来自不健康应用程序服务的重复事件使日志搜索变得棘手。 查看如何使用 Logstash、Beats 和 Elastic Agent 处理重复项。 SRE 每天都会被来自嘈杂应用程序的大量日志淹没。 Frederick P. Brooks 在他的开创性著作《人月神话》中说,“所有程序员都是乐观主

    2024年01月23日
    浏览(32)
  • Mysql 删除重复数据保留一条有效数据

    ============================== ©Copyright 蕃薯耀 2023-01-31 蕃薯耀的博客_CSDN博客-蕃薯耀分享,java,js领域博主 原理: 根据字段对数据进行分组,查询出所有分组的最小ID(即要保留的不重复数据) 将查询出来的数据(所有不重复的数据)存放到临时表中 从原来的表中删除ID不在临时表

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包