Merge 是Oracle9i版本之后增加的语句,使用该语句可实现对表的更新或插入。
有stu1,stu2两张测试表。
现在将stu2中的数据有条件第插入到stu1中。
ON 子句指定连接条件(检查stu2中的每一行看是否与stu1中的行 匹配):如果匹配,
则使用UPDATE更新stu1中的行,如果不匹配,则使用INSERT插入到stu1中。
测试过程如下:
SQL> SELECT STUNO,STUNAME,GENDER FROM STU1;
STUN STUNAME GEND
---- ---------- ----
1100 changong 男
1104 张燕广 女
已选择2行。
SQL> SELECT STUNO,STUNAME,GENDER FROM STU2;
STUN STUNAME GEND
---- ---------- ---- -------- ---------- ---- ----
1100 changong 男
1101 bowmman 女
1104 张燕广 男
已选择3行。
SQL> MERGE INTO STU1 S1
USING (SELECT STUNO,STUNAME,GENDER FROM STU2)s2
ON (s1.STUNO=s2.STUNO)
WHEN MATCHED THEN UPDATE SET
s1.STUNAME=s2.STUNAME,s1.GENDER=s2.GENDER
WHEN NOT MATCHED THEN INSERT (STUNO,STUNAME,GENDER)
VALUES(s2.STUNO,s2.STUNAME,s2.GENDER);
3 行已合并。
SQL> commit;
提交完成。
SQL> SELECT STUNO,STUNAME,GENDER FROM STU1;
STUN STUNAME GEND
---- ---------- ----
1100 changong 男
1104 张燕广 男
1101 bowmman 女
已选择3行。