2016-11-12 8 views
1

表Bの値に基づいて表Aの列を更新したいと思います。以下の形式を使用していますが、構文エラーが発生します。Inner Join throw構文エラーを使用した更新

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

修正済み。テーブルBの参照がありました。 – Kumar

+0

そして、何がエラーですか? –

答えて

3

「informix sql update」を簡単に検索すると、UPDATEコマンドの構文を説明する2つのリファレンスマニュアルページが返されます。いずれも非標準のFROM句のサポートを示していません。

標準SQLでは、相関サブクエリが使用されます。あなたのクエリがBに存在する行のみが欠落している行がNULLに更新されるだろう、それがなければAに適用されることを確実にザ・句をEXISTS

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' 
); 

のようになります。

関連する問題