2016-11-21 22 views
0

たとえば、クエリで参照されるテーブルからレコードを削除するには、正しい結果を返すクエリがありますが、そのレコードを削除します。クエリで参照されている同じテーブル。すでにSelect * from cte Where cte.Rn>1 and cntDups >1を照会することによって行を選択することができますようクエリ結果に基づいてレコードを削除するには

;with cte as (select *, 

row_number() over (partition by c.[Trust Discharge], c.[AE Admission], c.[NHS Number] 
        order by c.[Hospital Number]) as Rn, 

count(*) over (partition by c.[Trust Discharge], c.[AE Admission], c.[NHS Number]) as cntDups 
     from CommDB.dbo.tblNHFDArchive as c) 

     Select * from cte 

Where cte.Rn>1 and cntDups >1 
+0

どれが? '.Rn> 1'と' cntDups> 1'のようなものですか? – McNets

+0

はい上記の基準が満たされているCommDB.dbo.tblNHFDArchiveから削除します。 – Simon

+0

ええと、あなたがしようとしていることは、ここで答えられていると思います。http://stackoverflow.com/questions/812512/faster-way-to-delete-matching-rows – am05mhz

答えて

1

、あなたは unique_column が重複する値を持つことができない、あなたのテーブルの列であることをdelete from your_table where unique_column in (Select unique_column from cte Where cte.Rn>1 and cntDups >1)

ノートを実行することにより、それらを削除することができ、かつyour_table行が存在する表です。

テーブルをバックアップしておくことを忘れないでください。

関連する問題