【问题标题】:update statement in oracle with join [duplicate]oracle中的更新语句与join [重复]
【发布时间】:2014-12-31 00:55:31
【问题描述】:

我已经创建了这个 sql,我需要用给定的结果更新表

SELECT DISTINCT t1.t1_val3, t1.t1_val4
                DECODE (b_val,
                        'A', 'Its A',
                        'B', 'Its B',
                        'C', 'Its C',
                        NULL
                       ) decode_val,

           FROM t1, t2, t3
          WHERE t1.t1_val = t2.t2_val
            AND t2.t2_val = t3.t3_val
            AND t3.t3_val2 <> 'PSA'
            AND t3.t3_val2 = 'Y'

现在使用这个查询我需要更新 t1 表。

类似的,

update t1 
set
t1.val5=decode_val
where t1.t1_val3= value returned from above query(first column t1_val3) 
and t1.t1_val4= value returned from above query(2nd column t1_val4)

DB - 10g

【问题讨论】:

    标签: sql oracle oracle10g


    【解决方案1】:

    试试这个:

    update t1 
    set
    t1.val5 =DECODE (b_val,
                        'A', 'Its A',
                        'B', 'Its B',
                        'C', 'Its C',
                        NULL
                       ) 
    
           FROM t1, t2, t3
          WHERE t1.t1_val = t2.t2_val
            AND t2.t2_val = t3.t3_val
            AND t3.t3_val2 <> 'PSA'
            AND t3.t3_val2 = 'Y'
    

    【讨论】:

    • 请在提交前验证您的帖子,始终使用代码标签并检查标签是否正确应用。
    • 我是新来的。对不起 :)
    • 没问题。我已经编辑了你的答案。
    • 这也适用于我。
    • 将其标记为答案,这可能对某人有所帮助
    【解决方案2】:

    由于您使用的是 10g,MATCHEDNOT MATCHED 子句现在是 optional

    MERGE INTO t1 a
    USING (SELECT DISTINCT t1.t1_val3, t1.t1_val4
                    DECODE (b_val,
                            'A', 'Its A',
                            'B', 'Its B',
                            'C', 'Its C',
                            NULL
                           ) decode_val,
    
               FROM t1, t2, t3
              WHERE t1.t1_val = t2.t2_val
                AND t2.t2_val = t3.t3_val
                AND t3.t3_val2 <> 'PSA'
                AND t3.t3_val2 = 'Y') b
    ON(a.t1_val3 = b.t1_val_3 and a.t1_val4 = b.t1_val4)
    WHEN MATCHED THEN 
       UPDATE SET a.t1.val5 = b.decode_val
    

    【讨论】:

    • 谢谢拉利特。像魅力一样工作:)
    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2018-10-10
    相关资源
    最近更新 更多