2017-02-03 77 views
1

我在SQL Server中看到下面的查詢似乎並沒有在firebird中運行。從SQL Server到firebird的查詢轉換(UPDATE with inner join)

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'究竟是什麼?公司和table2之間沒有限制條件,這有效地使得這是一個笛卡爾產品,並且你不使用它。 –

回答

1

我不認爲火鳥允許更新連接。您可以使用相關子查詢做到這一點:

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