从子查询的结果更新

时间:2021-02-10 12:17:34

标签: sql

嗨,我想从子查询的结果中更新数据

UPDATE A
SET A.a = (select a from A inner join B on B.b=A.c and 
        B.cf='RGNVQE63H48J869P'  and B.b=2345 and
        CAST(A.a as decimal)>1);

我想要子查询的 A.a=result。

1 个答案:

答案 0 :(得分:1)

使用相关子查询。您的代码有问题,因为正在更新的表在子查询中重复:

UPDATE A
    SET A.a = (SELECT b.a 
               FROM B 
               WHERE B.b = A.c AND 
                     B.cf = 'RGNVQE63H48J869P' AND
                     B.b = 2345 and
                     CAST(A.a as decimal) > 1
              );

注意事项:

  • 如果子查询返回多于一行,则会导致错误。
  • 如果子查询没有返回任何行,则将分配 0

这回答了您在此处提出的问题。如果这不能满足您的真正需要,请提出一个问题,其中包含示例数据、所需结果、适当的数据库标签以及您想要做什么的明确说明。