注意:如果可能,我正在寻找纯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。
答案 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
)