sqlserver多表关联更新-更新关联不到另一张表的记录

本文探讨了在使用SQL Server进行多表关联更新时遇到的问题,以及在Oracle环境中遇到的语法不兼容问题。作者尝试了为表添加别名但未成功,后通过创建CTE(公共表表达式)解决了ID不明确的错误。解决方案是先通过CTE关联两个表获取所需字段,再使用NOT EXISTS子句更新目标表中未关联的记录。
摘要由CSDN通过智能技术生成

1、今天用sqlserver里面的三个表进行关联更新,发现oracle里面的更新语法用不了:提示id无明确,因为三个表里面都有id
在这里插入图片描述
如果在更新表前面加个别名 a ,又提示 列名a无效。
2、然后想想换了一个方法:就是把要更新的表放到not exists里面去,但是执行后发现0行被更新,还是有问题。想想是因为我要更新的是关联不到其他两个表的记录,用的not exists,所以不能把要关联的表放进去
在这里插入图片描述

3、解决方法:

既然id不明确,那我先关联2个表只获取关联字段取个别名,然后再not exists更新就行了。
用了: ;WITH CTE as

;WITH CTE AS
(SELECT DISTINCT B.VID FROM [dossier10111].[dbo].[FILEtable1] B,[dossier10111].[dbo].[FILEPAGEtable1]
C WHERE B.id=C.FID)
UPDATE [dossier10111].[dbo].[volumntable1] SET qybj=‘2’ WHERE NOT EXISTS(SELECT 1 FROM CTE WHERE ID=VID)


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值