1. 程式人生 > >Oracle:用其他表中的值更新

Oracle:用其他表中的值更新

CREATE TABLE TB1 ( SYSNO INT, VAL1  VARCHAR2(2), VAL2  VARCHAR2(2) )

CREATE TABLE TB2 ( SYSNO2 INT, VAL3   VARCHAR2(2), VAL4   VARCHAR2(2) )

INSERT INTO TB1(SYSNO,  VAL1, VAL2) VALUES (1, 'A1', 'A2') INSERT INTO TB1(SYSNO,  VAL1, VAL2) VALUES (2, 'B1', 'B2') INSERT INTO TB2(SYSNO2, VAL3, VAL4) VALUES (1, 'A3', 'A4') INSERT INTO TB2(SYSNO2, VAL3, VAL4) VALUES (2, 'B3', 'B4')

----------------------------------------------------------

SELECT * FROM TB1 SELECT * FROM TB2

--用 TB2 的 VAL3 更新 TB1 的 VAL1 (只更新 SYSNO = 1 的行記錄) UPDATE TB1  SET VAL1 =  ( SELECT VAL3 FROM TB2 WHERE TB2.SYSNO2 = TB1.SYSNO  AND TB2.SYSNO2 = 1) WHERE EXISTS ( SELECT NULL FROM TB2 WHERE TB2.SYSNO2 = TB1.SYSNO AND TB2.SYSNO2 = 1 )

--用 TB2 的 VAL3 更新 TB1 的 VAL1, 用 TB2 的 VAL4 更新  TB1 的 VAL2 (只更新 SYSNO = 2 的行記錄)

UPDATE TB1 SET (VAL1, VAL2) = ( SELECT VAL3, VAL4 FROM TB2 WHERE TB2.SYSNO2 = TB1.SYSNO  AND TB2.SYSNO2 = 2) WHERE EXISTS ( SELECT NULL FROM TB2 WHERE TB2.SYSNO2 = TB1.SYSNO AND TB2.SYSNO2 = 2 )

SELECT * FROM TB1

COMMIT