【发布时间】:2018-07-26 07:55:32
【问题描述】:
这可以在 SQL Server 中完成(而我们可以在 UPDATE 语句中使用 FROM 子句)。但我对 Oracle SQL 还是很陌生。场景很简单,就像这样。我有 2 个表(具有相同的行数)。现在我需要通过匹配每个表的row_number,将这个表的一列更新为另一个表的一列。
我参考了 Oracle UPDATE,这看起来是最有前途的方法:
update
(select * from
(select A1,
row_number() over (order by A1) as rn from A) d
join
(select B1,
row_number() over (order by B1) as rn from B) v on d.rn = v.rn)
set A1 = B1;
但它抛出了这样的错误:
无法修改映射到非键保留表的列
有一些像这样涉及 UPDATE 的例子,但它与我的场景不完全一样,因为匹配条件不涉及基表的任何现有列(我们需要更新的表)
【问题讨论】:
-
A1和B1是两张表的主键吗?
-
@KaushikNayak 不,它们只是相同数据类型的普通列。
标签: sql oracle sql-update