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

删除ORACLE中的半重复行SQL

廉展鹏
2023-03-14

我的表中有行需要删除,因为有几列是重复的。

e、 g Col1,Col2,Col3,Col4

如果Col1、Col2和Col3是重复的,不管Col4中的值是多少,我希望删除这两个重复的。我该怎么做?

共有3个答案

梁昊天
2023-03-14

如果存在具有相同col1、col2和col3的另一行具有较低的col4值,则使用EXISTS删除行。即保留一个col1、col2、col3行。

delete from tablename t1
where exists (select 1 from tablename t2
              where t2.col1 = t1.col1
                and t2.col2 = t1.col2
                and t2.col3 = t1.col3
                and t2.col4 < t1.col4)

要删除这两行/所有行,跳过col4条件,改为执行group by

delete from tablename t1
where exists (select 1 from tablename t2
              where t2.col1 = t1.col1
                and t2.col2 = t1.col2
                and t2.col3 = t1.col3
              group by t2.col1, t2.col2, t2.col3
              having count(*) > 1)
宋康安
2023-03-14

按这些ID分组,并与HAVING检查是否有重复。找到重复后删除记录。

delete from mytable 
where  (col1,col2,col3) in
(
  select col1,col2,col3
  from mytable 
  group by col1,col2,col3
  having count(*) > 1
);
丁韬
2023-03-14

您可以使用place子句来完成此操作:

delete from t
    where (col1, col2, col3) in (select col1, col2, col3
                                 from t
                                 group by col1, col2, col3
                                 having count(*) > 1
                                );
 类似资料:
  • 问题内容: 我正在Oracle中进行测试,并在表中填充了一些示例数据,但是在此过程中,我不小心加载了重复的记录,因此现在无法使用某些列创建主键。 如何删除所有重复的行并仅保留其中之一? 问题答案: 使用伪列。 其中,和组成每个记录的标识键。您可能会列出所有列。

  • 本文向大家介绍Oracle删除重复的数据,Oracle数据去重复,包括了Oracle删除重复的数据,Oracle数据去重复的使用技巧和注意事项,需要的朋友参考一下 Oracle  数据库中查询重复数据: select * from employee group by emp_name having count (*)>1;  Oracle  查询可以删除的重复数据 select t1.* from

  • 问题内容: 我有一张看起来像这样的桌子 表格1 ID,名称 如何编写查询以删除所有具有重复名称的行,但保留具有较低ID的行? 问题答案: 如果您使用的是SQL Server 2005或更高版本: 如果使用SQL Server 2000及更低版本

  • 问题内容: 我有一个注释表,其结构如下: 我有很多重复的评论,名字和电子邮件都一样。我需要删除它们,有人可以建议我如何使用一个查询来实现此目标吗? 谢谢 问题答案:

  • 问题内容: 我有一个包含以下字段的表: 现在,我需要删除具有same的行。一种方法是使用以下SQL以及脚本( ): 运行此查询后,我可以使用服务器端脚本删除重复项。 但是,我想知道是否只能使用SQL查询来完成。 问题答案: 一种简单的方法是在3列上添加索引。在编写语句时,请包含关键字。像这样: 这将删除所有重复的行。作为一项额外的好处,重复的将来会出错。和往常一样,您可能需要在运行类似内容之前进行

  • 问题内容: 我的数据库中有一个表,其中有要删除的重复记录。我不想为此创建具有不同条目的新表。我想要的是从现有表中删除重复的条目,而无需创建任何新表。有什么办法吗? 看到这些都是我的字段: id对于每一行都是唯一的。 L11_data对于相应的动作字段是唯一的。 L11_data具有公司名称,而动作具有行业名称。 因此,在我的数据中,我在L11_data中有各自行业的重复公司名称。 我要拥有的是存储