我们可以在不使用中间表的情况下从teradata中的表中删除重复记录吗 [英] Can we delete duplicate records from a table in teradata without using intermediate table
本文介绍了我们可以在不使用中间表的情况下从teradata中的表中删除重复记录吗的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们能否在不使用中间表的情况下从 teradata 的多集表中删除重复记录.
Can we delete duplicate records from a multiset table in teradata without using intermediate table.
假设我们有 2 行有值1、2、3和 1, 2, 3在我的多集表中然后删除后我应该有只有一行,即 1、2、3.
Suppose we have 2 rows with values 1, 2, 3 and 1, 2, 3 in my multiset table then after delete i should have only one row i.e. 1, 2, 3.
推荐答案
除非在您的系统上启用了 ROWID 使用(并且概率非常低),否则您不能这样做.您可以通过尝试解释一个 SELECT ROWID FROM 表来轻松测试它;
You can't unless the ROWID usage has been enabled on your system (and probablity is quite low). You can easily test it by trying to explain a SELECT ROWID FROM table;
否则有两种可能的方式.
Otherwise there are two possible ways.
重复次数少:
- 创建一个新表作为
SELECT all columns FROM table GROUP BY all columns HAVING COUNT(*) >1;
DELETE FROM tab WHERE EXISTS (SELECT * FROM newtab WHERE...)
INSERT INTO tab SELECT * FROM newtab
大量重复:
- 使用
SELECT DISTINCT *
复制到新表或复制到 SET TABLE 以去除重复项,然后重新插入
- copy to a new table using
SELECT DISTINCT *
or copy to a SET TABLE to get rid of the duplicates and then re-INSERT back
这篇关于我们可以在不使用中间表的情况下从teradata中的表中删除重复记录吗的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文