Update 的写法
CREATE TABLE T(pk INT NOT NULL PRIMARY KEY,c1 INT);
CREATE TABLE S(pk INT NOT NULL PRIMARY KEY,c1 INT);
DB2
UPDATE T SET c1 = (SELECT c1 FROM S WHERE S.pk = T.pk) WHERE pk IN (SELECT pk FROM S);
IBM Informix/MS SQL Server
UPDATE T SET c1 = S.c1 FROM T, S WHERE T.pk = S.pk;
也可以使用Merge
MERGE INTO T USING S ON T.pk = S.pk
WHEN MATCHED THEN UPDATE SET c1 = S.c1;
Upinsert方法
Standard pre SQL4 (one way of many)
FOR m AS SELECT T.pk tpk, S.pk spk, S.c1
FROM T RIGHT JOIN S ON T.pk = S.pk DO
IF m.tpk IS NULL THEN
INSERT INTO T VALUES(m.spk, m.c1);
ELSE
UPDATE T SET c1 = m.c1 WHERE pk = tpk;
END IF;
END FOR;
MERGE INTO T USING S ON T.pk = S.pk
WHEN MATCHED THEN UPDATE SET c1 = S.c1
WHEN NOT MATCHED THEN INSERT VALUES(pk, c1);
MERGE INTO T USING (VALUES(1, 2)) AS S(pk, c1)
ON S.pk = T.pk
WHEN MATCHED THEN UPDATE SET c1 = S.c1
WHEN NOT MATCHED THEN INSERT VALUES (pk, c1)