2017-07-08 13 views
0
UPDATE TABLE1 SET COL1 = 'UPDATED' 
INNER JOIN TABLE2 ON TABLE1.ID = TABLE2.ID 
WHERE COL2 = '1' AND COL3 IN('A','B') AND COL4 = 'NEW' 

を終了し、上記のコマンド投げ 『SQLコマンドが正常に』終了していない、それが起こっている理由を私は知っている可能性があり 注:?COL2、COL2はCOL4にしながら、TABLE1に常駐TABLE2、それが役に立つ場合UPDATEは投げ、JOIN「は適切にSQLコマンドを」

+1

列名を修飾して、どのテーブルから来るのかがわかります。 –

+0

TABLE1.COL2のような@GordonLinoff? –

+0

"SET"の後に "INNER JOIN"を持つことができないために起こっています - その構文はどこにありますか?なぜそれが機能しないのかの説明だけではなく、あなたのやりたいことを説明してください。 (おそらくそれはあなたの試みから推測することができますが、一般的にはうまくいかない試みから推測するのは悪い考えです) – mathguy

答えて

1

Oracleは明示的にはそのupdate構文でのに参加しサポートしていません(一定の条件の下でサブクエリを使用しているとき、それはサポートが参加しない)、このようなクエリは動作するはずです:。。

update TABLE1 
    set COL1 = 'UPDATED' 
    where col2 = '1' and col3 in ('A', 'B') and col4 = 'NEW' and 
      exists (select 1 
        from TABLE2 
        where TABLE1.ID = TABLE2.ID 
       ); 

の条件サブクエリがTABLE2を参照する場合は、がサブクエリに入る必要があります。

+0

Oracle **は 'update'で結合をサポートしています。あなたは私がそれについて書類の記入を書く必要があると感じた理由の一つです - そして、これについて何度かお話しました。 https://stackoverflow.com/documentation/oracle/8061/update-with-joins#t=201707082024504655365 – mathguy

+0

Oracleは*サブクエリ*をサポートしていますが、構文では 'join'sはサポートしていません。 –

+0

@mathguyあなたはそれを行う方法を示す回答をしてください。私はあまりにも知りたいです - それは不思議なOPだけではありません。 –