从数据库中的x + 1个重复行中删除/更新x

时间:2012-04-05 08:57:08

标签: sql sql-server

注意:如果可能,我正在寻找纯SQL查询解决方案,以便我可以在SQL Server Manager中运行它。

我的脚本中有一个错误,这意味着一次输入的数据已被多次输入,现在我需要一种方法来删除除{1}}字段之外的所有数据或更新每个company_id的{​​{1}}列,其中包含以下内容:

export有多次出现 company_id有多次出现

我的数据结构如下:

short_desc

我不介意哪些条目被更新/删除,只要我在上面的示例中只有1个,所以我只剩下2个条目/标记为long_desc

我尝试过使用子选择和分组来做各种事情,但我总是需要最终对 id | company_id | short_desc | long_desc | export 1 1234 word text 0 2 1234 word text 0 3 1234 word text 0 4 1234 word text 0 5 1234 word text 0 6 1234 word text 0 7 5678 another foo 0 8 5678 another foo 0 9 5678 another foo 0 10 5678 another foo 0 11 5678 another foo 0 12 5678 another foo 0 进行分组,所以我永远不会得到重复项。我不知道是否只是一个漫长的早晨,但我似乎无法想到一个纯粹的SQL方法来做这个,我想尝试避免编写脚本来做到这一点。

如果设置了export=-1标志,我将删除它等于0的位置。

我正在使用SQL Server 2008。

1 个答案:

答案 0 :(得分:1)

update table set export = -1
where table.id in 
(
  select min(id) from table group by company_id,short_desc,long_desc
  having count(1) > 1
)