2014-11-17 12 views
2

WHERE 절의 다른 테이블의 값을 사용해야하는 Firebird-SQL 데이터베이스에서 값을 업데이트하려고합니다.여러 테이블의 값을 사용하여 업데이트 문

성명은 다음과 같습니다

UPDATE table1 SET date = 'TODAY' FROM table2 
WHERE table2.id = table1.table2_id 
AND table2.value1 >= table2.value2 

는 분명히,이 파이어 버드-SQL에서 작동하지 않습니다.

아마도 이것은 매우 간단한 질문이지만 Firebird-SQL에는 익숙하지 않습니다. 상관 하위 쿼리를 사용하여

답변

2

시도 :

UPDATE table1 
    SET DATE = 'TODAY' 
    WHERE EXISTS (SELECT 1 
        FROM table2 
        WHERE table2.id = table1.table2_id AND table2.value1 >= table2.value2 
       ); 
0

@Gordon Linoff의 대답은 완벽하게 좋은 방법입니다. 대안은 merge 사용하는 것입니다 경우 가장 간단한 제외

MERGE INTO table1 
USING  table2 
ON   (table2.id = table1.table2_id AND table2.value1 >= table2.value2) 
WHEN MATCHED THEN 
    UPDATE SET date = 'TODAY'; 

을, 내가 대신 UPDATE

MERGE를 사용하는 경향이