插入之前,看表中是否有这次准备插入的却已经存在的数据,存在的进行更新,不存在进行插入
MERGE INTO test1
USING test2
ON (test1.numid = test2.numid)
WHEN MATCHED THEN --不需要填写更新的目标表
UPDATE SET test1.varid = test2.varid
WHEN NOT MATCHED THEN --不需要填写插入的目标表
INSERT VALUES (test2.numid, test2.varid);
例子:
--column1 column2 column3是变量
MERGE INTO users a
USING (SELECT v_column1 NAME, v_column2 password, v_column3 desc
FROM dual) b
ON (a.name = b.name)
WHEN MATCHED THEN
UPDATE SET a.password = b.password and a.desc = b.desc
WHEN NOT MATCHED THEN
INSERT (NAME, password, desc) VALUES (b.NAME, b.password, b.desc);