假設有表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.
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並不支持這種語法格式.
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);