2
UPDATE
  (
    SELECT
      a.COL1
    FROM
      TABLE1 a,
      TABLE2 b,
      TABLE3 c
    WHERE
      a.name = b.name
      c.ccol = b.ccol AND
      AND b.col1 = 'anyvalue'
      AND a.col2 = 'anothervalue'
  ) u
SET
  u.COL1 = 'VALUE'

TABLE1にはPKが含まれていないため、このクエリは機能しません。そのようなクエリを書く方法は?

4

2 に答える 2

3

以下は、上記で達成しようとしているように見えることを達成するはずです。

UPDATE  TABLE1
SET     COL1 = 'VALUE'
WHERE   EXISTS
        (   SELECT  1
            FROM    TABLE2 B
                    INNER JOIN TABLE3 C
                        ON B.Ccol = C.Ccol
            WHERE   b.Name = Table1.Name
            AND     b.Col1 = 'AnyValue'
            AND     c.Col1 = 'AnotherValue'
        )
于 2012-08-07T14:41:01.217 に答える
0

私はオラクルで働いたことがありませんが、このようなことを試してみてください。結合とステートメントが正しい限り、pkがないことは問題にはなりません。

これはあなたが求めているものと同等のSQLです

UPDATE u
  SET  u.COL1 = 'VALUE'
  FROM Table1 AS u
  INNER JOIN Table2 AS b ON u.name  = b.name 
  INNER JOIN Table3 AS c ON c.ccol  = b.ccol 
 WHERE b.col1 = 'anyvalue'  AND u.col2 = 'anothervalue'
于 2012-08-07T14:41:11.870 に答える