使用 SQL 从另一个表更新 Oracle 表数据
在关系型数据库管理中,经常需要使用另一个表中的值来更新一个表中的数据。这可以使用 SQL UPDATE 语句来实现。
场景:
考虑两个表,表 1 和表 2,它们包含以下数据:
<code>表 1: id name desc ----------------------- 1 a abc 2 b def 3 c adf 表 2: id name desc ----------------------- 1 x 123 2 y 345</code>
目标:
当两个表中的 id 列匹配时,使用表 2 中的 name 和 desc 列更新表 1。预期结果如下:
<code>表 1: id name desc ----------------------- 1 x 123 2 y 345 3 c adf</code>
方案 1:相关更新
在 Oracle SQL 中,可以使用相关更新:
<code class="language-sql">UPDATE table1 t1 SET (name, desc) = (SELECT t2.name, t2.desc FROM table2 t2 WHERE t1.id = t2.id) WHERE EXISTS ( SELECT 1 FROM table2 t2 WHERE t1.id = t2.id )</code>
说明:
此查询对 table1 执行更新,使用子查询根据匹配的 id 从 table2 检索相应的 name 和 desc 值。WHERE EXISTS 子句确保只更新 table1 中在 table2 中有匹配行的行。
方案 2:基于 JOIN 的更新
假设连接产生的结果保留了键,则可以使用以下更新语句:
<code class="language-sql">UPDATE (SELECT t1.id, t1.name name1, t1.desc desc1, t2.name name2, t2.desc desc2 FROM table1 t1, table2 t2 WHERE t1.id = t2.id) SET name1 = name2, desc1 = desc2</code>
说明:
此查询对连接视图执行更新,有效地将 table1 的 name 和 desc 列更新为 table2 中相应的 id 匹配的值。
以上是如何使用 SQL 从另一个表更新 Oracle 表数据?的详细内容。更多信息请关注PHP中文网其他相关文章!