2013-06-25 6 views
-1

Возможно ли обновить значение в таблице на основе значения в другой таблице в Oracle?Обновить значение в таблице на основе значения в другой таблице

Я пытаюсь сделать что-то вроде этого (я знаю, что это не правильное утверждение UPDATE):

UPDATE table1 
    SET table1.flag = 1 
    FROM table1 t1 
INNER JOIN table2 t2 
    ON t1.emp_id = t2.emp_id 
INNER JOIN table3 t3 
    ON t2.company = t3.company 
WHERE t1.emp_id = '5632' 
    AND l2.company = '83CP' 
    AND t1.code = 'LIEU' 
+0

@Ben Это не дубликат. В этом вопросе они хотели бы обновить поле со значением в другой таблице. Я хотел бы обновить на основе значения в другой таблице (как часть условия) – Zzz

+1

Это точный дубликат Azzi, все решения, предлагаемые в ответах, будут работать точно так же. Не важно, устанавливаете ли вы флаг или используете обновляемый столбец. Я бы использовал параметр MERGE, так как мне было легче понять, что происходит. – Ben

+0

@Ben Вопрос другой; независимо от того, является ли ответ одинаковым. – Zzz

ответ

1

Я надеюсь, что у вас есть первичный ключ в table1, так что используйте его вместо ROWID, но если вы не использовали

update table1 
set flag =1 
where rowid in (select t1.rowid 
       FROM table1 t1 
         INNER JOIN table2 t2 ON t1.emp_id = t2.emp_id 
       INNER JOIN table3 t3 ON t2.company = t3.company 
       WHERE t1.emp_id = '5632' 
         AND l2.company = '83CP' 
         AND t1.code = 'LIEU'    
       )