[英]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.