
MERGE INTO table_name alias1

USING (table|view|sub_query) alias2

ON (join condition)

WHEN MATCHED THEN

UPDATE table_name

SET col1 = col_val1,

col2 = col2_val

WHEN NOT MATCHED THEN

INSERT (column_list) VALUES (column_values);
上面的语法大家应该都容易懂吧,那我们按照以上的逻辑再写一次。

MERGE INTO T T1

USING (SELECT a,b FROM T WHERE t.a='1001') T2

ON ( T1.a=T2.a)

WHEN MATCHED THEN

UPDATE SET T1.b = 2

WHEN NOT MATCHED THEN

INSERT (a,b) VALUES('1001',2);