我为带有查询的表选择旧值和新值列表:
select new, old from SOME_TABLE;
new old
----------- -----------
1174154 1064267743
1174164 1072037230
1174167 1065180221
1174180 1071828953
1174181 1067402664
1174204 1073143287
1174215 1057480190
1174222 1061816319
1174331 1072011864
1174366 1061275972
现在我需要更新包含这些旧值的表,并用新的替换它们 的。
update OTHER_TABLE set some_column = <newvalue> where some_column = <oldvalue>
是否可以使用一个查询执行此操作,还是需要循环结果元组并更新每行?
我无法更改数据库布局或编写自动执行此操作的触发器...
答案 0 :(得分:0)
尝试以下方法:
UPDATE OTHER_TABLE t1
SET some_column = (SELECT t2.new FROM SOME_TABLE t2
WHERE t2.old = t1.old_value_column)
只需将old_value_column
替换为OTHER_TABLE
中包含旧值的列名,以及其他表和列名称。
答案 1 :(得分:0)
我不会将子查询用作afaik,您将为要更新的表中的每一行选择some_table。如果两个表中的行数都很大,则可能会遇到问题。因此,我建议使用下面列出的更新方法。
update t
set yourcolumn = n.new
from yourtable t
join some_table s
on t.id = s.old