2017-02-03 8 views
1

다음 쿼리는 파이어 버드에서 실행되지 않는 SQL Server에 있습니다.SQL Server에서 파이어 버드로 쿼리 변환 (내부 조인을 사용하는 UPDATE)

UPDATE TABLE1 
SET FIELD1 = XFER.FIELD2 
FROM COMPANY 
INNER JOIN TABLE2 AS XFER 
ON TABLE1.FIELD1 = XFER.FIELD1 WHERE FIELD1 not like 'STRING1%' 

어떻게 이것을 파이어 버드로 변환하나요? 내가 그대로두고 나면 "토큰 알 수 없음"이라는 오류 메시지가 나타납니다.

+0

검색어에 'company'를 정확히 사용하면 무엇입니까? 회사와 테이블 2 사이를 제한 할 조건이 없으므로 효과적으로 카티 션 곱을 만들 수 있으며 사용자는이를 사용하지 않습니다. –

답변

1

Firebird가 조인으로 업데이트 할 수 있다고 생각하지 않습니다. 당신은 상관 하위 쿼리와 함께이 작업을 수행 할 수 있습니다

UPDATE COMPANY 
    SET FIELD1 = (SELECT FIELD2 
        FROM XFER 
        WHERE COMPANY.FIELD1 = XFER.FIELD1 
       ) 
    WHERE FIELD1 not like 'STRING1%' AND 
      EXISTS (SELECT 1 FROM XFER WHERE COMPANY.FIELD1 = XFER.FIELD1); 
+0

지연되어서 죄송합니다. 나는 이것을 내가 사용했던 대답으로 표시하는 것을 놓쳤다. – CoderWolf

2

update의 파이어 버드 구문은 from 절을 허용하지 않습니다. 대신 merge을 사용해야합니다.

merge into table1 
    using (select table2.field1, table2.field2 
      from company 
      inner join table2 on company1.id = table2.companyid -- made up condition missing in your question 
      where table2.field1 not like 'STRING1%' 
     ) src 
    on table1.field1 = src.field1 
    when matched then 
     update set table1.field1 = src.field2