2016-11-12 38 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。