2012-02-23 10 views

答えて

15

このシンタックスは、Oracle SQLでは機能しません。オラクルで

あなたは時々すなわち、テーブルは「キー保存」であれば加入更新することができます。

UPDATE (SELECT a.val_a, b.val_b 
      FROM table a 
      JOIN table b ON a.b_pk = b.b_pk) 
    SET val_a = val_b 

b_pkbの主キーであると仮定すると、ここでは、参加理由は行ごとに更新可能ですAの値はであり、最大値はであるので、更新は確定的です。あなたのケースでは

更新された値は、あなたがこのような何か、EXIST条件で簡単な更新を使用することができ、別のテーブルに依存しないので、:

UPDATE mytable t 
    SET t.VALUE = 'value' 
WHERE EXISTS 
     (SELECT NULL 
      FROM tableb b 
     INNER JOIN tablec c ON c.id = b.id 
     INNER JOIN tabled d ON d.id = c.id 
     WHERE t.id = b.id 
      AND d.key = 1) 
0
update t T 
set T.value = 'value' 
where T.id in (select id from t T2, b B, c C, d D 
       where T2.id=B.id and B.id=C.id and C.id=D.id and D.key=1) 

-- t is the table name, T is the variable used to reffer to this table 
+1

はあなたが含まれるようにあなたの答えを展開することができますあなたのコードの説明?それはあなたが思うかもしれない以上に読者を助けます。 – gunr2171

+1

'in'キーワードは、1000を超えるレコードがある場合は機能しません。だから、この答えは無効です。 –

関連する問題