假设我有一张名为 InsuranceMember 的表,其中包含保险计划的所有成员及其配偶。但是哦不!对于 CountryCD 为“Canada”且 PlanCD 为“99999”的配偶,此表中的 MemberNum(主键)均不正确!
但幸运的是,有一个名为 InsurancePlan 的表,其中包含配偶,并且这些配偶的 MemberNum(也是主键)都是正确的!
所以在这个假设中,我需要一个条件更新语句来设置 InsuranceMember.MemberNum = InsurancePlan.MemberNum where CountryCD = 'Canada' and PlanCD = '99999'
如何编写查询以使其正常工作并更新每一行。
当我尝试编写此查询时,我总是会收到此错误:-811 更新语句的 SET 子句中的嵌入式 SELECT 语句或子选择的结果是多行的表,或子查询的结果基本谓词的多于一个值
作为 SQL 的初学者,这对我来说非常令人困惑,但我确信我所描述的情况是很多人都处理过的。
编辑:这是我使用的产生该更新的代码示例:
UPDATE PRD.InsuranceMember mem
set mem.MemberNum = ( Select pln.MemberNum
from PRD.InsurancePlan pln
where mem.MemberNum <> pln.MemberNum
and mem.MoneySource = pln.MoneySource
)
WHERE mem.MemberNum = (SELECT pln2.MemberNum FROM PRD.InsurancePlan pln2
WHERE mem.ClientCd = pln2.ClientCd
AND mem.PLanCd = pln2.PlanCd)
AND Mem.MoneySource='3'
AND Mem.CountryCd = 'Canada'
AND Mem.PlanCd = '99999'
;