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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章