繁体   English   中英

Oracle SQL:更新查询列与子查询 select 与总和

[英]Oracle SQL : update query a column with a subquery select with sum

我尝试执行这个请求

UPDATE table1 t1
   SET c1 = (SELECT c2
                FROM (SELECT key, SUM(c4 - c3) AS c2
                        FROM view2
                       GROUP BY key
                       ORDER BY key) t2
               WHERE t1.key = t2.key)

但是它非常非常长...

我尝试使用“with”但它是同一回事,合并但它不是解决方案

我不想使用 PL/SQL

谢谢你的帮助

您有其他解决方案吗?

如果我尝试

MERGE INTO table1 t1
    USING (SELECT id ,sum(c4- c3) AS result FROM view3 group by id order by id) t2
    ON (t1.id= t2.id)
  WHEN MATCHED THEN
    UPDATE SET t1.result = t2.result ;

我有这条消息:ORA-03113 fin de fichier sur canal de communication

为什么你 select 所有键的 c2,只是将它们全部解雇,只使用匹配 t1 的键? 您的查询可以重写为:

UPDATE table1 t1
 SET c1 = (SELECT SUM(v2.c4 - v2.c3)
           FROM view2 v2
           WHERE v2.key = t1.key)

然后只确保视图在通过键选择时快速,即提供一个索引或多个索引以允许快速查找。

但是为什么要将这个值存储在表中,如果从视图中可以始终看到 select 呢? 如果您希望它只是一个副本,那么这是个坏主意。 如果您希望它作为初始值,以后可以独立于视图的结果进行更改,那没关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM