Oracle 中update from解决方法
在Oracle中,你不能直接使用UPDATE ... FROM ... 这样的语法来更新一个表。在Oracle中,如果你想根据另一个表的数据来更新一个表,你需要使用子查询或者连接(JOIN)。
以下是两种常见的解决方案:
解决方案1:使用子查询
UPDATE table1
SET table1.column1 = (SELECT table2.column2 FROM table2 WHERE table1.id = table2.id)
WHERE EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id);
在这个例子中,我们从table2中选择了一个子查询来更新table1的column1列。只有当table1的id列的值在table2中存在时,才会进行更新。
解决方案2:使用内连接(INNER JOIN)
UPDATE (SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.id = table2.id)
SET table1.column1 = table2.column2;
在这个例子中,我们使用了一个内连接来选择需要更新的行,然后更新table1的column1列。这个方法在Oracle中是允许的,并且比使用子查询更直观。
注意:在使用这些方法时,请确保你的子查询或连接能够返回你期望更新的行,否则你可能会无意中更新到其他的行。
评论已关闭