【问题标题】:How do I delete records based on query results如何根据查询结果删除记录
【发布时间】:2016-11-21 08:35:18
【问题描述】:

如何从查询中引用的表中删除记录,例如,下面是我的查询,它返回正确数量的结果,但我想从查询中引用的同一个表中删除这些记录.

;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   

【问题讨论】:

  • 哪些?那些.Rn > 1cntDups > 1
  • 是的,我想从满足上述条件的 CommDB.dbo.tblNHFDArchive 中删除。
  • 嗯,我想你想要做的在这里得到了回答stackoverflow.com/questions/812512/…

标签: sql-delete


【解决方案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 是行所在的表。

如果它正在生产中,请不要忘记先备份您的表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 2022-01-20
    • 2021-10-15
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多