首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用同一个表的内部联接的表的Oracle更新值

使用同一个表的内部联接的表的Oracle更新值
EN

Stack Overflow用户
提问于 2018-01-07 20:43:46
回答 1查看 1.3K关注 0票数 1

我试图使用以下语句更新bplustree表的深度列,该语句在MYSQL上运行良好,但在oracle上我有以下错误:

代码语言:javascript
运行
复制
BEGIN    
  WHILE EXISTS (SELECT * FROM bplustree WHERE depth IS NULL) 
  LOOP    
    UPDATE T SET T.depth = P.depth + 1
        FROM bplustree AS T INNER JOIN bplustree AS P 
        ON (T.parent_node_id = P.node_id) 
    WHERE P.depth >= 0 AND T.depth IS NULL;
  END LOOP;
END;

错误报告- ORA-06550:第4行,第3栏: PL/ SQL : ORA-00933: SQL命令未正确结束 ORA-06550:第3行,第2栏: PL/ SQL :忽略SQL语句 06550。00000 -“行%s,列%s:\n%s” *原因:通常是PL/SQL编译错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-07 21:50:11

您可以在updateselect的帮助下组合merge,如下所示:

代码语言:javascript
运行
复制
MERGE INTO bplustree t1
USING
(
  SELECT P.depth + 1 depth, p.node_id
    FROM bplustree T INNER JOIN bplustree P
      ON (T.parent_node_id = P.node_id)    
    WHERE P.depth >= 0 AND T.depth IS NULL 
) t2
ON ( t1.node_id = t2.node_id )
WHEN MATCHED THEN UPDATE SET
t1.depth = t2.depth; 

德梅奥

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48141339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档