我们是否可以在不使用中间表的情况下从teradata中的表中删除重复记录

我们是否可以在不使用中间表的情况下从teradata中的表中删除重复记录,teradata,Teradata,我们可以从teradata中的多集表中删除重复记录而不使用中间表吗 假设我们有两行值 1, 2, 3 和1,2,3 在我的多集表中,然后在删除之后,我应该 只有一行,即1、2、3。除非您的系统已启用ROWID使用,并且可能性很低,否则无法使用。您可以通过尝试解释表中的SELECT ROWID来轻松测试它 否则,有两种可能的方法 副本数量少: 创建一个新表,作为通过COUNT*>1的所有列从表组中选择所有列的结果; 从存在的选项卡中删除从新选项卡中选择*,其中。。。 “插入到”选项卡“从新选项卡

我们可以从teradata中的多集表中删除重复记录而不使用中间表吗

假设我们有两行值 1, 2, 3 和1,2,3 在我的多集表中,然后在删除之后,我应该
只有一行,即1、2、3。

除非您的系统已启用ROWID使用,并且可能性很低,否则无法使用。您可以通过尝试解释表中的SELECT ROWID来轻松测试它

否则,有两种可能的方法

副本数量少:

创建一个新表,作为通过COUNT*>1的所有列从表组中选择所有列的结果; 从存在的选项卡中删除从新选项卡中选择*,其中。。。 “插入到”选项卡“从新选项卡中选择*” 高重复数:

使用SELECT DISTINCT*复制到新表,或复制到集合表以消除重复项,然后重新插入
除非在系统上启用了ROWID使用并且可能性很低,否则无法执行此操作。您可以通过尝试解释表中的SELECT ROWID来轻松测试它

否则,有两种可能的方法

副本数量少:

创建一个新表,作为通过COUNT*>1的所有列从表组中选择所有列的结果; 从存在的选项卡中删除从新选项卡中选择*,其中。。。 “插入到”选项卡“从新选项卡中选择*” 高重复数:

使用SELECT DISTINCT*复制到新表,或复制到集合表以消除重复项,然后重新插入

使用相同的方法,但在中间创建一个易失性表。

创建易失性多集表TEMPDB.TEMP_DUP_ID 行ID小数31,0 主索引行\u ID 在提交保存行上

插入TEMPDB.TEMP_DUP_ID 选择行ID 从DB.T表 按DUP顺序按DUP DESC>1限定分区上的行数

然后使用该表进行删除


理想情况下,每行都有一个唯一的键,否则,您将需要对数据进行更多的操作,以生成一个具有行\号的数据,例如。。。这只是一个建议。

使用相同的方法,但在中间创建一个易失性表。

创建易失性多集表TEMPDB.TEMP_DUP_ID 行ID小数31,0 主索引行\u ID 在提交保存行上

插入TEMPDB.TEMP_DUP_ID 选择行ID 从DB.T表 按DUP顺序按DUP DESC>1限定分区上的行数

然后使用该表进行删除


理想情况下,每行都有一个唯一的键,否则,您将需要对数据进行更多的操作,以生成一个具有行\号的数据,例如。。。这只是一个建议。

--不创建中间表

从原始_表中删除,其中COL1,2在select COL1,count FROM ORGINAL_表中 按1分组 计数大于1的 和基于重复的列>1----删除一行并保留它


如果您有重复的行并且想要删除一行,那么我们需要使用sql中的最后一行,如果我们想要删除两行,则忽略该条件。

--不创建中间表

从原始_表中删除,其中COL1,2在select COL1,count FROM ORGINAL_表中 按1分组 计数大于1的 和基于重复的列>1----删除一行并保留它

如果您有重复的行并且想要删除一行,那么我们需要使用sql中的最后一行,如果我们想要删除两行,那么忽略该条件

创建不带dup的表

CREATE TABLE new AS (SELECT DISTINCT * FROM old) WITH DATA;
核实

放下原来的那个

drop table old;
将新表重命名为原始表

RENAME TABLE new to old; 
核实

创建不带dup的表

CREATE TABLE new AS (SELECT DISTINCT * FROM old) WITH DATA;
核实

放下原来的那个

drop table old;
将新表重命名为原始表

RENAME TABLE new to old; 
核实