【问题标题】:Is it possible to put a result of SUM() ORDER BY in original table?是否可以将 SUM() ORDER BY 的结果放入原始表中?
【发布时间】:2020-07-30 08:27:49
【问题描述】:

是否可以在原始表中添加(放置)SUM() ORDER BY 的结果?


A Table
Columns   id,value,val2
1,200,1
2,300,3
3,300,2
4,400,4
5,100,1
6,100,1
7,100,1
8,100,4

TOTAL 1 = 500 * 1.5 = 750
 

B Table
Columns   id,value,val2
1,100,50
2,500,33
3,600,0
5.900,0


Ideal
B Table
Columns   id,value,val2
1,100,770
2,500,33
3,600,0
5.900,0

SELECT A.id , SUM (value)*1.5 AS VITAMIN_D FROM A WHERE val2 in (SELECT id from B)

我想更新 B 表中的 val3 以添加 SUM(value) 的结果。 我该怎么办?

【问题讨论】:

  • 改为创建视图,以避免数据不一致。
  • 显示所需的输出。并且 - 表 B 有 4 列,但您只显示 3 个值。
  • A()B_table 和我一样。实际上,他们有 60000000 条记录。使视图成为一种有效的方法吗?
  • 对不起,我犯了错误..我修改了。
  • 仍然显示此示例数据所需的输出。

标签: sql oracle sql-update


【解决方案1】:

我认为你想要一个相关的子查询:

update tableb
set val3 = (
    select sum(value) * 1.5
    from tablea a
    where a.val2 = tableb.id
)

【讨论】:

  • 感谢您的回答。 ORA-01427: 单行子查询返回多行。
  • @puss 。 . .子查询是没有group by 的聚合子查询。它不能返回多于一行。也许您的桌面上有触发器或正在发生其他事情,但这似乎回答了您的问题。
猜你喜欢
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多