2016-11-08 6 views
1

の主キーなしで重複したエントリを削除します。私はこのテーブルのMSSQLを持つSQL

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

EntityNoは一意である必要がありますが、それは主キーではありません。このテーブルから重複エントリの1つを削除するにはどうすればよいですか?ありがとう。

+0

チェック[この](http://donotforgetitmaster.blogspot.in/2016/05/another-simple-way-to-find-remove.html)。 – Viki888

+0

DBMSに言及してください。 – Esty

+0

@TanjimRahmanそれはあなたが尋ねているのであればMSSQLです – jason

答えて

6

使用このクエリ

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

これは1つの行だけを削除しますか?重複したエントリの両方ではありませんか? – jason

+0

はい、エントリが1つだけ残り、それ以外は削除されます。 – Husen

+0

ありがとうございました。 – jason

0

あなたはこのようにOracleでrowidでこれを行うことができます。

sql serverで行IDの等価
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 
     ); 

がサポートされていません%%physloc%%です。しかし、独自のtemp ROWIDをこのテーブルに追加して、この列にシーケンシャル値を与えて使用することもできます。

関連する問題