使用合并时:= MERGE INTO ... USING subquery t_alias
似乎必须用括号将子查询括起来,如 MERGE INTO ... USING (subquery) t_alias
. 但是,oraclesql语言参考文档的subquery::=语法图似乎显示了可选路径(通过query\块)不需要括号。也就是说,文档似乎允许这两个版本。
例如:
以下内容无效,但根据文档允许。
MERGE INTO tblA A
USING SELECT col FROM tblB B -- ORA-00903 invalid table name and "SELECT" is highlighted.
ON (A.id = B.id)
...
以下是有效的(并且根据文档也是允许的)。
MERGE INTO tblA A
USING (SELECT col FROM tblB) B
ON (A.id = B.id)
...
根据如何阅读语法图
如果语法图有多个路径,那么您可以选择任何路径。
是否存在oracle sql语言参考文档错误?
提前谢谢。
1条答案
按热度按时间n9vozmp41#
在合并查询中,using子句之后使用的操作数不完全是子查询。它实际上定义了一个表。例如:如果要从另一个表的值更新一个表。
如果tblb有非常大量的数据,并且希望优化性能,可以使用查询从表中获取所需的列。
合并也类似于join,下面是更好的理解方式
或
获取无效表名的原因是,如果不将select语句括在括号中,oracle将不知道所用表的别名。因此,当查询中有特定条件时,请始终将括号括起来。