从子查询的结果更新

  • 本文关键字:结果 更新 查询 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=子查询的结果。

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

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

这回答了您在这里问的问题。如果这不是你真正需要的,问一个新的问题,包括样本数据,期望的结果,适当的数据库标记,以及你想做什么的清晰解释。

最新更新