在SQL

问题描述:

删除无主键重复条目我有这个表MSSQL:在SQL

EntityNo int 
City nvarchar(MAX) 
Province nvarchar(MAX) 
EntityDate datetime 

EntityNo应该是唯一的,但它不是主键。我怎样才能从这个表中删除重复的条目之一?谢谢。

+0

检查[这](http://donotforgetitmaster.blogspot.in/2016/05/another-simple-way-to-find-remove.html)。 – Viki888

+0

请提及DBMS。 – Esty

+0

@TanjimRahman它的MSSQL,如果这是你问 – jason

使用此查询

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

这将只删除一行,对吗?不是两个重复的条目? – jason

+0

是的,它只剩下一个条目,否则将被删除。 – Husen

+0

非常感谢。 – jason

您可以在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 
     ); 

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