日期:2014-05-18  浏览次数:20582 次

还是一个update语句,请各位达人看一下!
表t1
id   pid           aa     data1   data2   data3
1       1             1       1           2           3
2       1             2       1           2           3
3       1             3       1           2           3
4       1             4       1           2           3
5       2             1       1           2           3
6       2             2       1           2           3
7       2             3       1           2           3
8       2             4       1           2           3
9       3             1       1           2           3
10     3             2       1           2           3
11     3             3       1           2           3
12     3             4       1           2           3
13     4             1       1           2           3
14     4             2       1           2           3
15     4             3       1           2           3
16     4             4       1           2           3
我想用一个update语句实现表中的相同pid的
aa为4的data1=aa为3的data1+aa为2的data1
请问这个语句怎么写?

------解决方案--------------------
表t1
id pid aa data1 data2 data3
1 1 1 1 2 3
我想用一个update语句实现表中的相同pid的
aa为4的data1=aa为3的data1+aa为2的data1
请问这个语句怎么写?
-------------------------
update 表t1 set data1=X
from t1 a inner join t1 b on (a.pid=b.pid)
where a.aa=4 and data1=3 and aa=3

这是个思路,不过你表达的太不明白了.
------解决方案--------------------
update t1
set data1=
(select data1 from t1 b where a.pid=b.pid and b.aa=2)+
(select data1 from t1 c where a.pid=c.pid and c.aa=3)
from t1 a
where aa=4

-- result
1 1 1 1 2 3
2 1 2 1 2 3
3 1 3 1 2 3