2016-11-12 67 views
1

我想基于表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

您引用一个表或别名Dc_Zone,但它不会出现在您的查询中 – antlersoft

+0

已更正。参考是tableB。 – Kumar

+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。