0

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

我的脚本中有一个错误,这意味着一些本来应该输入一次的数据已经输入了多次,现在我需要一种方法来删除除 1 个条目之外的所有 PERcompany_id字段更新export每个条目的 1 个条目的列company_id

short_desc有不止一次出现并且 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

我不介意更新/删除哪些条目,只要每个条目只有 1 个,因此在上面的示例中,我将只剩下 2 个条目/标记为export=-1.

我尝试过使用子选择和分组来做各种事情,但我总是需要最终分组,id所以我永远不会得到重复项。我不知道是否刚刚度过了一个漫长的早晨,但我似乎想不出一种纯粹的 SQL 方式来做到这一点,我想尽量避免编写脚本来做到这一点。

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

我正在使用 SQL Server 2008。

4

1 回答 1

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
)
于 2012-04-05T09:01:23.237 回答