2017-10-07 6 views
1

내가이 개 테이블은 fooditem 가지고 .I 내가 메신저SQL oracle에서 UPDATE 및 JOIN을 어떻게 사용합니까?

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
from food_serve q 
inner join fooditem a 
on q.food_item_no = a.food_item_no 
where a.food_type = 'M' AND q.FOOD_SERVE_SIZE = 'ST'; 

후 날이 그러나 그것 던지는 오류와 같은 값을 업데이트하려고

SELECT food_serve.food_serve_cost 
FROM fooditem INNER JOIN food_serve 
ON fooditem.food_item_no= food_serve.food_item_no and fooditem.food_type = 'M'and food_serve.food_serve_size = 'ST'; 

그러나로 변경하고자하는 데이터를 볼 수 있습니다 food_serve 연구 내가 기울기에서 업데이 트에 사용되지만 이걸 수정 찾을 수 없다는 것을 발견했습니다 어떤 도움주세요? 메신저

+0

이 도움이 될 https://stackoverflow.com/questions/2446764/update-statement-with-inner- join-on-oracle –

+0

여기에 더 많은 중복이 있습니다 : https://stackoverflow.com/search?q=%5Boracle%5D+update+with+join –

답변

0
update food_serve q 
inner join fooditem a 
on q.food_item_no = a.food_item_no 
set q.food_serve_cost = q.food_serve_cost *1.15 
where a.food_type = 'M' AND q.FOOD_SERVE_SIZE = 'ST'; 
0

UPDATE ... FROM ... 구문은 PostgreSQL Update에서 오는 오라클 SQL Developer를 사용하여.
이것은 독점적 인 구문이며 다른 RDBMS 시스템에서는 작동하지 않습니다.


사용이 쿼리

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
WHERE EXISTS (
    SELECT null FROM fooditem a 
    WHERE q.food_item_no = a.food_item_no 
    AND a.food_type = 'M' 
) 
AND q.FOOD_SERVE_SIZE = 'ST' 

하거나 변화입니다 :

update q 
set q.food_serve_cost = q.food_serve_cost *1.15 
WHERE food_item_no IN (
     SELECT food_item_no FROM fooditem 
     WHERE food_type = 'M' 
    ) 
AND FOOD_SERVE_SIZE = 'ST'