2011-06-07 43 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