2016-11-21 42 views
0

如何从查询中引用的表中删除记录,例如,下面是我的查询,它返回了正确数量的结果,但我希望从中删除这些记录在查询中引用的同一个表。如何根据查询结果删除记录

;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

因为你已经可以通过查询Select * from cte Where cte.Rn>1 and cntDups >1选择行,您可以通过运行delete from your_table where unique_column in (Select unique_column from cte Where cte.Rn>1 and cntDups >1)

注意unique_column是表中的列中不能有重复的值删除,并your_table是行所在的表。

并且如果它在生产中,请不要忘记先备份表格。