2011-06-07 42 views
1

這裏是什麼,我試圖做一個簡化的表結構法:更新在MySQL基於子查詢幾行

T1:
ID,UID,組,值1
1,1,A,3
2,1,B,4
3,2,A,6
4,2,B,7

現在我想的是同時具有A組的行和組B中的值的任何UID assosicated與B組將被添加到與B組相關聯的行中的值。

所以對於上述結果將是
1,1,A,7(3 + 4)
2,1,B,4
3,2,A,13(6 + 7)
4,2,B,7

也可能存在只有組A存在或僅存在組B的uids,在這種情況下不應發生這些行的更改。

我做什麼,到目前爲止,是我創造出了一行對於需要更新任何行的查詢:

ID,UID的newval
1,1,7
3,2, 13

子查詢有點複雜,並且加入需要用它自行更新的表。

現在我該如何使用它來更新原始表格? (或者我怎麼做一些其他方式)?

謝謝。

回答

1
Update T1 
set Value1 = T1.Value + T2.Value 
from T1 inner join T1 as T2 on T1.uid = T2.uid 
where T1.group = "A" and T2.group = "B" 
+0

這將如何去如果我想T1是MyTableWithLongName的別名?以及如果我需要一次更新兩個字段? – epeleg 2011-06-12 18:50:17

+0

'更新MyTableWithLongName設置Value1 = T1.Value + T2.Value,Value2 = x從MyTableWithLongName作爲T1內部連接MyTableWithLongName作爲T2在T1.uid = T2.uidwhere T1.group =「A」和T2.group =「B」 ' – therealmitchconnors 2011-06-13 17:06:48