- 爱易网页
 
                        - 
                            MSSQL教程
 
                        - 还是一个update语句,请各位达人看一下!解决办法 
 
                         
                    
                    
                    日期:2014-05-18  浏览次数:20708 次 
                    
                        
                         还是一个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