Sql 删除重复记录而不使用中间表

Sql 删除重复记录而不使用中间表,sql,teradata,Sql,Teradata,我想删除数据库中表中的所有重复数据,而不使用行id或中间表。有没有办法做到这一点 这是我的初始表格: emp emp_name emp_addr 2 B Pune1 3 C Pune2 1 A Pune 2 B Pune1 3 C Pune2 1 A Pune 2 B Pune1 3 C Pune2 1 A Pune 2 B Pune1 1 A Pune 1 A Pune 以及删除重复数据后的

我想删除数据库中表中的所有重复数据,而不使用行id或中间表。有没有办法做到这一点

这是我的初始表格:

emp emp_name    emp_addr
2   B   Pune1
3   C   Pune2
1   A   Pune
2   B   Pune1
3   C   Pune2
1   A   Pune
2   B   Pune1
3   C   Pune2
1   A   Pune
2   B   Pune1
1   A   Pune
1   A   Pune
以及删除重复数据后的外观:

emp emp_name    emp_addr
2   B   Pune1
3   C   Pune2
1   A   Pune
或者类似的东西,如果在RDBMS中支持的话


您可以尝试
行号
,即

 WITH CTE AS(
   SELECT emp,
       RN = ROW_NUMBER()OVER(PARTITION BY emp ORDER BY emp)
   FROM employee
)
DELETE FROM CTE WHERE RN > 1
谢谢
Suresh

你为什么要排除两种非常合理的方法来解决这个问题?你问了同样的问题,这个问题已经得到了回答,当然,最好的办法是通过添加唯一约束或简单地在Teradata中使用集合表来避免重复行:-)这会删除OP示例中的所有记录:)Teradata中不允许从cte中删除
;with cte as
(
select *,rn=row_number()over(order by empID) from table
)

delete from cte where rn>1
 WITH CTE AS(
   SELECT emp,
       RN = ROW_NUMBER()OVER(PARTITION BY emp ORDER BY emp)
   FROM employee
)
DELETE FROM CTE WHERE RN > 1