【问题标题】:Delete duplicate rows teradata删除重复行 teradata
【发布时间】:2018-05-02 22:49:04
【问题描述】:

我使用这个查询来获取所有重复的行:

SELECT count(*),col1, col2 from table GROUP BY col1, col2 having count(*)>1

我试过这个查询:

DELETE FROM TABLE WHERE (col1, col2) in (SELECT count(*),col1, col2 from table GROUP BY col1, col2
having count(*)>1 )

但由于选择语句中的count(*),它不起作用。

如何删除此查询的所有重复行? 谢谢

【问题讨论】:

  • 您可以简单地从选择列表中删除计数。当然这会删除 all 重复的行,但您可能希望保留一行...
  • 你必须使用一个中间表,假设你不想删除所有重复的行。
  • 成功了,谢谢大家
  • 您不必使用中间表。如果您需要定期运行此查询,您可以引入 row_number() 函数来确定字段集的优先级并删除 row_number()

标签: sql duplicates teradata


【解决方案1】:

如果启用了 rowid 使用,您可以使用以下查询来执行此操作

delete from table
where row_id not in (
select max(rowid)  from table 
group by col1,col2 ) TMP

  1. 您可以将所有数据复制到新的 SET 表中(消除重复)
  2. 从主表中删除所有记录
  3. 将新创建的SET表中的所有记录重新插入到主表中

【讨论】:

  • 您的 DELETE 将删除所有唯一的行并仅保留重复的行。
猜你喜欢
  • 2022-11-18
  • 1970-01-01
  • 2018-04-07
  • 2012-05-31
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多