当前位置: 首页 > 知识库问答 >
问题:

如果两列数据匹配,则从SQL表中删除1个重复行[Duplicate]

凌长恨
2023-03-14

我的表中有三列

键名、数字、数据

数据由大量重复的条目组成。如果重复"KeyName"和"Data",我需要从表中的每个重复条目中删除1行。如何实现这一点SQL查询。

共有2个答案

匡晟
2023-03-14

您可以使用row\u number()为每对保留一行:

with todelete as (
      select t.*,
             row_number() over (partition by keyname, data order by (select NULL)) as seqnum
      from t
     )
delete
from todelete
where seqnum > 1;

与任何此类操作一样,删除前应先检查。这很简单:

with todelete as (
      select t.*,
             row_number() over (partition by keyname, data order by (select NULL)) as seqnum
      from t
     )
select *
from todelete
where seqnum > 1;
奚无尘
2023-03-14

这应该可以

WITH CTE
    AS (SELECT KeyName
            , Number
            , Data
            , [rn] = ROW_NUMBER() OVER(PARTITION BY KeyName
                                          , Data ORDER BY KeyName
                                                     , Data)
        FROM   yourtable)
     /* UNCOMMENT BELOW TO DELETE */
     --DELETE
    --FROM   CTE
    --WHERE  rn > 1;

    SELECT *
    FROM   CTE
    WHERE  rn > 1;
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法:

  • 当我控制台下面的两个数组是如何看 在两个数组中,349都是匹配的,匹配后应返回1。下面是我如何尝试的 它不匹配任何人都能给出解决方案!!!!

  • 问题内容: 我有一个脚本,它使用DROP TABLE IF EXISTS删除表的负载,这可以工作。 此脚本中还有一个删除操作,用于从我不管理的另一个表中删除一行。该表可能存在或不存在。是否有任何在尝试删除行之前检查该表是否存在? 这需要适用于MYSQL和SQLServer 谢谢亚历克斯 问题答案: 要签入SQL SERVER, 要检查mysql: 您只需数:

  • 问题内容: 我有两个表,并且如果第二个表中存在行的确切副本,则需要从第一个表中删除行。 有没有人举过我如何在MSSQL Server中执行此操作的示例? 问题答案: 好吧,在某个时候,您将必须检查所有列-可能还需要加入… 应该可以做到……还有,但是这只会有所 帮助 -您仍然需要检查实际值以防止哈希冲突。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 我有两个火花DF,我需要加入。只选择df1中存在的df2中的值,不应该有重复的行。 例如: df1: df2: 我正在做以下工作: 但是我的输出有几个重复的行。 如果val从df1中删除,我试图实现一个类似except的操作。但是除了之外,

  • 我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!