删除SQL中没有主键的重复条目

时间:2016-11-08 05:41:27

标签: sql sql-server duplicates

我有这个表MSSQL:

if ($sum == 1) echo "Bad"

EntityNo应该是唯一的,但它不是主键。如何从此表中删除其中一个重复条目?感谢。

2 个答案:

答案 0 :(得分:6)

使用此查询

DELETE a FROM (
    SELECT row_number() over(partition by EntityNo order by EntityNo) as RowNo
    FROM Entity
) AS a WHERE RowNo > 1

答案 1 :(得分:1)

你可以在oracle中使用rowid这样做:

DELETE FROM 
   table_name A
WHERE 
  a.rowid > 
   ANY (
     SELECT 
        B.rowid
     FROM 
        table_name B
     WHERE 
        A.col1 = B.col1
     AND 
        A.col2 = B.col2
        );

sql server中的行ID的等效值为%%physloc%%,不受支持。但是您也可以将自己的临时rowid添加到此表中,并为此列提供顺序值并使用它。