从 SQL 服务器到 firebird 的查询转换(使用内部连接进行更新)

Query conversion from SQL Server to firebird (UPDATE with inner join)

我在 SQL 服务器中有以下查询,但在 firebird 中似乎 运行 没有。

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

如何将其转换为 firebird?如果我保持原样,它会在 from.

上给我错误 "Token unknown"

我认为 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);

update does not allow a from clause. Instead you should use merge 的 Firebird 语法:

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