项目中遇到一个场景,当表中有这条记录的时候,进行修改操作,没有则新增一条记录。
最初用Java代码实现的功能,后来发现有Merge这条语句。
1 MERGE INTO table_name alias1 2 USING (table | view | sub_query) alias2 3 ON (join condition) 4 WHEN MATCHED THEN 5 UPDATE table_name SET col1 = col_val1, col2 = col2_val 6 WHEN NOT MATCHED THEN 7 INSERT (column_list) VALUES (column_values);
比如有个表 user,要查找有没有叫张三丰的,有的话更新年龄,没有的话,新建记录。
MERGE INTO user a USING (count(*) c from user where user ='张三丰' ) b ON (b.c>0) WHEN MATCHED THEN UPDATE set age=66 WHEN NOT MATCHED THEN INSERT (name) VALUES ('张三丰');