db2 UPDATE

在DB2数据库环境下:
  假设有表A,B两张表,有下列UPDATE语句:
    UPDATE A
    SET A1 = (SELECT B1 FROM  B WHERE A.ID = B.ID)   
对于上面的语句,表明是要对表A所有行的A1字段进行update:对满足WHERE A.ID = B.ID的行,则进行更新A1=B1;对不满足该条件的行,则对A1更新为A1=null.
 
若对表A的字段A1,想update的是:满足A.ID = B.ID的行,进行更新A1=B1,不满足该条件的行,则不进行更新,SQL语句为:
  UPDATE A
    SET A1 = (SELECT B1 FROM B WHERE A.ID = B.ID)
    WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
其中,上面where语句的作用是限制更新条件:A.ID = B.ID,关于这一点,DB2数据库有点烦人,它不能支持下列形式的update语句:
   UPDATE A
      SET A1 = B1
      FROM A, B WHERE A.ID = B.ID
若能支持这样的语法形式,则再写原来的SQl语句就会简洁易懂多了.只可惜,强大的DB2并不支持这种语法格式.
另外,上面更新的只是一个字段,DB2可以同时更新几个字段:
    UPDATE A
      SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID);
 
   UPDATE A
     SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
     WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章