2011-02-23 3 views
3

내가 tabC에서 선택을했습니다에서 선택과 타를 업데이트합니다. 그 선택을 tabB에 적용했습니다. 이제 tabA를이 두 가지 값의 값으로 업데이트해야합니다.PostgreSQL의 : TABB 및 tabC

SELECT * FROM tabC 
WHERE id_field IN 
    (SELECT id_field FROM tabB WHERE date_IN = '2011-02-22') 
ORDER BY id_field 

UPDATE 타바 : tabC 및 TABB에

SELECT

UPDATE tabA 
SET field_1 = tabC.field_1, field_2 = tabC.field_2, field_2 = tabC.field_2 
FROM tabC WHERE tabA.id_field IN 
    (SELECT tabC.id_field FROM tabC WHERE tabC.id_field IN 
    (SELECT id_field FROM tabB WHERE date_IN = '2011-02-22')) 

UPDATE 문은 오류없이 실행하지만 결과는 내가 expeted했던 것이 아니다 : 3 개 필드는이 모든 행에 대해 동일한 값. 뭐가 문제 야?

답변

10

사용은 내부 대신

UPDATE tabA 
    SET field_1 = tabC.field_1, 
     field_2 = tabC.field_2, 
     field_3 = tabC.field_3 
    FROM tabC 
     INNER JOIN tabB ON tabC.id_field = tabB.id_field AND tabB.date_IN = '2011-02-22' 
WHERE tabA.id_field = tabC.id_field; 
+0

고마워 개빈 가입! – albus2011