使用 Inner Join 抛出语法错误进行更新

Update using Inner Join throwing syntax error

我想根据 Table B 中的值更新 Table A 中的列。使用以下格式,但出现语法错误。

update TableA
set 
TableA.MOdule_id =TableB.MOdule_id 
from TableA
inner join 
TableB
on TableA.end_Slot_id =TableB.Slot_Id 
where TableA.Slot_Id = 'AAA';

如果有人能在这方面提供帮助,那将是很大的帮助。

快速搜索 "informix sql update" returns 两个描述 UPDATE 命令语法的参考手册页。没有一个表示支持非标准的 FROM 子句。

标准 SQL 为此目的使用相关子查询。您的查询应该类似于

update TableA
set MOdule_id =
    (select TableB.MOdule_id
     from TableB
     on TableA.end_Slot_id = Slot_Id)
where Slot_Id = 'AAA'
and exists (
     select 1
     from TableB
     on TableA.end_Slot_id = Slot_Id
     and TableA.Slot_Id = 'AAA'
);

EXISTS 子句确保只有 B 中存在的行才会应用于 A。没有它,任何缺失的行都将更新为 NULL。