参数说明:
INTO子句:指定更新或插入的目标表。
WHERE condition: UPDATE子句和INSERT子句的条件,只有在条件满足时才进行更新操作,可缺省。
示例
CREATE TABLE target ( id integer primary key , name char(20) , altitude int, address char(20) not null ); CREATE TABLE source ( id integer primary key , name char(20) , altitude int, address char(20) not null ); INSERT INTO target values(1,'a', 90, 'shanghai'); INSERT INTO target values(2,'i', 100, 'xianyang'); INSERT INTO target values(5,'c', 99,'chengdu'); insert into source values(1,'a', 90, 'nanjing'); insert into source values(3,'d', 80, 'hangzhou'); -- 将target中和source匹配的记录的address字段 更新为source中的address值 MERGE INTO target t USING source AS s ON t.id = s.id WHEN MATCHED THEN UPDATE SET address = s.address; table target; id | name | altitude | address ----+----------------------+----------+---------------------- 1 | a | 90 | shanghai 2 | i | 100 | xianyang 5 | c | 99 | chengdu (3 rows) -- 将source中不存在于target的记录插入到target中 MERGE INTO target t USING source AS s ON t.id = s.id WHEN NOT MATCHED THEN INSERT VALUES(s.id, s.name, s.altitude, s.address); table target; id | name | altitude | address ----+----------------------+----------+---------------------- 2 | i | 100 | xianyang 5 | c | 99 | chengdu 1 | a | 90 | nanjing 3 | d | 80 | hangzhou (4 rows)