如何使用Oracle链接更新语句中的表?

时间:2014-03-25 17:24:17

标签: sql oracle

我需要更新表A上的所有行,其中A.id = B.id和B.code是一些值。

类似的东西:

UPDATE table_a
 SET processed = 'Y'
 WHERE table_a.id = table_b.id AND
       table_b.code = 'ABC';

有谁知道这样做的正确方法?

谢谢!

2 个答案:

答案 0 :(得分:0)

以下是针对您的问题的快速解决方法。

UPDATE 
(
 SELECT 
   a.processed, a.id 
 FROM 
   table_a a, 
   table_b b
 WHERE 
   a.id = b.id 
 AND 
   b.code = 'ABC'
 ) u
SET u.processed = 'Y'

OR

UPDATE table_a a
SET a.processed = 'Y'
WHERE a.id IN
(SELECT b.id FROM table_b b WHERE b.code = 'ABC')

希望这可能有帮助!

答案 1 :(得分:-1)

您必须先引用第二个表才能使用它。您可以使用子选择:

UPDATE table_a SET processed = 'Y' 
WHERE table_a.id = (SELECT table_b.id FROM table_b WHERE table_b.code = 'ABC');

subselect返回table_b中的id列表,满足条件table_b.code =' ABC'。更新将通过subselect列表中的table_a.id影响table_a中的那些行。