加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – db2:使用不同的表上的select更新多个行和字段

发布时间:2020-12-12 07:06:41 所属栏目:MsSql教程 来源:网络整理
导读:是否可以使用不同表(B.c B.d)的值c和d为A的所有行增加表(A.a和A.b)的字段a和b,其中A.x == B.z? 我对此查询感到疯狂 解决方法 DB2和SQL标准在UPDATE语句中没有FROM子句. 所以你必须明确地将步骤分开 识别要修改的行和 计算新值. . 这是一个例子: UPDATE TABL
是否可以使用不同表(B.c B.d)的值c和d为A的所有行增加表(A.a和A.b)的字段a和b,其中A.x == B.z?

我对此查询感到疯狂

解决方法

DB2和SQL标准在UPDATE语句中没有FROM子句.
所以你必须明确地将步骤分开

>识别要修改的行和
>计算新值.

.

这是一个例子:

UPDATE TABLE A
SET A.FLD_SUPV = ( SELECT B.FLD_SUPV
FROM TABLEA A,TABLEB B,TABLEC C,TABLED D
WHERE A.FLD1= B.FLD1
AND A.FLD_DT >= B.FLD_FM_DT
AND A.FLD_DT <= B.FLD_THRU_DT
AND A.FLD_DT > D.FLD_THRU_DT
AND A.FLD_DT < C.FLD_EFF_DT )
WHERE EXISTS ( SELECT B.FLD_SUPV
FROM TABLEA A,TABLED D
WHERE A.FLD1= B.FLD1
AND A.FLD_DT >= B.FLD_FM_DT
AND A.FLD_DT <= B.FLD_THRU_DT
AND A.FLD_DT > D.FLD_THRU_DT
AND A.FLD_DT < C.FLD_EFF_DT )

要更新两个字段,您可以使用如下示例:

UPDATE table1 t1 
 SET (col1,col2) = (
  SELECT col3,col4 
  FROM  table2 t2 
  WHERE t1.col8=t2.col9
 )

优化器将看到SET和FROM子句中的子查询是相同的,它应该在内部执行计划中合并它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读