我想根据表B中的值更新表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';
如果有人可以提供帮助,那将是很有帮助的。
答案 0 :(得分:3)
快速搜索" informix sql update"返回两个描述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。