更新一列倍数以等于另一列

时间:2014-03-21 18:58:26

标签: sql sql-server-2008

我有一张桌子,我正在尝试更新。在我的表中,如果列有重复,则将其与其匹配组合在一起。其中一个文档是原文。我需要更新我的表以使组ID与原始文档相同。因此,如果所有文档属于同一组,则所有文档必须具有相同的统一标题。例如OCR0000000006,OCR0000000008都有统一标题06000146.pdf。

以下是我的表格示例:

DOCID           Duplicate_Group Duplicate_Principal Duplicate_Similarity Unified_Title
OCR0000000001   OCR0000000001        Yes                         100    06000093.pdf
OCR0000000002                        No                            0    06000110.pdf
OCR0000000003   OCR0000009554        No                           94    06000847.pdf
OCR0000000004   OCR0000000006        No                           95    06000117.pdf
OCR0000000005                        No                            0    06000849.pdf
OCR0000000006   OCR0000000006        Yesn                        100    06000146.pdf
OCR0000000007                        No                            0    06000852.pdf
OCR0000000008   OCR0000000006        No                           93    06000175.pdf

这是我上次尝试过的,这给了我“Subquery返回的值超过1”。错误。我还能够更新所有原始文档,但不能更新具有适当值的重复文档。

update tt 
set tt.Textual_Near_Duplicate_Group = (select unified_title from                                     #tempsquirrel tt
where  tt.Textual_Near_Duplicate_Group in (select yy.docid from #tempballs yy) and Textual_Near_Duplicate_Principal = 'yes')
from #tempsquirrel tt 
where tt.Textual_Near_Duplicate_Group in (select yy.docid from #tempballs yy) 

1 个答案:

答案 0 :(得分:0)

如果您获得的结果是预期的,但只是有多个值,则可以在子查询中使用GROUP BY或DISTINCT返回多个记录以删除重复的行。

该错误可能是由于它试图在tt.Textual_Near_Duplicate_Group的赋值中插入一个值

就像是:

set tt.Textual_Near_Duplicate_Group = (select unified_title from                                     #tempsquirrel tt
where  tt.Textual_Near_Duplicate_Group in (select yy.docid from #tempballs yy) and Textual_Near_Duplicate_Principal = 'yes' GROUP BY yy.docid)