语法格式:
MERGE [INTO] [database_name.]table_name
USING table_reference
ON conditional_exp
[WHEN MATCHED THEN UPDATE SET col_name1=expr1 [, col_name2=expr2] ...
[WHEN NOT MATCHED THEN INSERT [(col_name3,...)] VALUES (expr3,...)]
参数说明如下:
MERGE [INTO] [database_name.]table_name 部分,table_name 必须是表,不可以是
视图,可以使用别名。
USING table_reference 部分,
table_reference 可以是表、
查询或视图,
只允许有一个,
可以使用别名。
UPDATE 部分不支持DELETE 子句。
UPDATE 部分和INSERT 部分不支持WHERE 子句。
UPDATE 部分和INSERT 部分可以省略,但不可以同时省略,否则报语法错误。
UPDATE 部分和INSERT 部分位置不可以颠倒。
INSERT 的VALUES 部分不允许使用MERGE 表
UPDATE 或INSERT 中的列如果出现多次,不会报错,后指定的列生效,但建议不
要依赖于该行为,避免这样使用。
不允许一对多更新:
如果MERGE 表中的一行与USING 表中的多行符合连接条件,
则报错。
示例1:
GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 778
gbase> select * from t1 intersect select * from t2;
+------+-------+------------+--------+
| i | vc | d | dc |
+------+-------+------------+--------+
| 30 | third | 2013-09-04 | 11.216 |
+------+-------+------------+--------+
跨引擎DML 语句
GBase UP 支持跨引擎查询。