程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了带有单个where子句的Oracle sql MERGE INTO大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决带有单个where子句的Oracle sql MERGE intO?

开发过程中遇到带有单个where子句的Oracle sql MERGE intO的问题如何解决?下面主要结合日常开发的经验,给出你关于带有单个where子句的Oracle sql MERGE intO的解决方法建议,希望对你解决带有单个where子句的Oracle sql MERGE intO有所启发或帮助;

以我的经验,不仅在USING子句为MATCH表中的一行返回一行以上时,而且在无法 确定 仅返回一行(即使没有实际的行)时,也会返回此错误。返回多行的情况)。为了在这种情况下强制解析器接受查询,我通常会在MATCH..oN列上使用GROUP BY。

@H_628_7@mERGE intO scheR_246_11845@A1.table_1 table1 USING
(
 SELECT table2.column1, 
        MAX(vIEw1.column2) as column2
 FROM scheR_246_11845@A2.table_2 table2
 left JOIN scheR_246_11845@A2.VIEW_1 vIEw1
 ON table2.column2 = vIEw1.column3
 GROUP BY table2.column1
) t2 ON (table1.column3 = t2.column1 )

WHEN MATCHED THEN
  updatE
  SET table1.column4 = t2.column2;

解决方法

我有以下SQL代码(这是到目前为止我得到了多少):

 MERGE intO scheR_246_11845@A1.TABLE_1 table1 USING
    (
     select DISTinCT table2.column1,view1.column2
     FROM scheR_246_11845@A2.TABLE_2 table2
     LEFT JOIN scheR_246_11845@A2.VIEW_1 view1
     ON table2.column2 = view1.column3

    ) t2 ON (table1.column3 = t2.column1 )

    WHEN MATCHED THEN
      updatE
      SET table1.column4 = t2.column2;

以下是VIEW_1的定义:

    create view scheR_246_11845@A_2.VIEW_1
AS (SELECT 
scheR_246_11845@A_2.TABLE_1.columN_1,scheR_246_11845@A_2.TABLE_2.columN_1,scheR_246_11845@A_2.TABLE_2.columN_2,scheR_246_11845@A_2.TABLE_2.columN_3,scheR_246_11845@A_2.TABLE_5.columN_1,scheR_246_11845@A_2.TABLE_6.columN_1,scheR_246_11845@A_2.TABLE_6.columN_2,scheR_246_11845@A_2.TABLE_6.columN_3,scheR_246_11845@A_2.TABLE_6.columN_4,scheR_246_11845@A_2.TABLE_7.columN_1,scheR_246_11845@A_2.TABLE_7.columN_2,scheR_246_11845@A_2.TABLE_8.columN_1 
FROM scheR_246_11845@A_2.TABLE_1
INNER JOIN scheR_246_11845@A_2.TABLE_2
ON scheR_246_11845@A_2.TABLE_1.columN_1 = scheR_246_11845@A_2.TABLE_2.columN_2 
INNER JOIN scheR_246_11845@A_2.TABLE_5
ON scheR_246_11845@A_2.TABLE_1.columN_4 = scheR_246_11845@A_2.TABLE_5.columN_3
LEFT OUTER JOIN scheR_246_11845@A_2.TABLE_6
ON scheR_246_11845@A_2.TABLE_2.columN_2 = scheR_246_11845@A_2.TABLE_6.columN_4
LEFT OUTER JOIN scheR_246_11845@A_2.TABLE_7
ON scheR_246_11845@A_2.TABLE_2.columN_1 = scheR_246_11845@A_2.TABLE_8.columN_5
);

但是我收到以下错误消息

Error report -
SQL Error: ORA-30926: unable to get a stable set of rows in the source tables
30926. 00000 -  "unable to get a stable set of rows in the source tables"
*Cause:    A stable set of rows could not be got because of large dml

是什么导致错误?在哪里更改代码以使其起作用?

感谢您的帮助!

大佬总结

以上是大佬教程为你收集整理的带有单个where子句的Oracle sql MERGE INTO全部内容,希望文章能够帮你解决带有单个where子句的Oracle sql MERGE INTO所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。