如何更新db2中的多个选择行

时间:2016-09-23 12:47:01

标签: sql select db2

我有更新表中的多选行的问题。这是我的查询。 谁知道问题是什么?。

--update mvp_employer--
set (MEI_EMP_CAT_CD) = 
(select case when a.MEI_EMP_CAT_CD is not null then a.MEI_EMP_CAT_CD else b.MEI_EMP_CAT_CD end MEI_EMP_CAT_CD
from (
select MEI_ROC_NO,MEI_DOC_TYP_CD,MEI_EMP_CAT_CD from jimd2.mvp_employer
where mei_roc_no in (select mei_roc_no from MVP_EMPLOYER
WHERE MEI_DOC_TYP_CD IN ('632','999')
group by mei_roc_no having count(*) >1)
and MEI_DOC_TYP_CD IN ('632')
order by mei_roc_no, mei_doc_typ_cd ) a
FULL JOIN
(
select MEI_ROC_NO,MEI_DOC_TYP_CD,MEI_EMP_CAT_CD from jimd2.mvp_employer
where mei_roc_no in (select mei_roc_no from MVP_EMPLOYER
WHERE MEI_DOC_TYP_CD IN ('632','999')
group by mei_roc_no having count(*) >1)
and MEI_DOC_TYP_CD ='999'
order by mei_roc_no, mei_doc_typ_cd ) b 
on a.mei_roc_no = b.mei_roc_no
) 
where  MEI_DOC_TYP_CD IN ('632') 
and mei_roc_no ='AS0002107-A'

错误: - 错误代码-811,SQL状态21000:DB2 SQL错误:SQLCODE = -811,SQLSTATE = 21000,SQLERRMC = null,DRIVER = 3.53.95

1 个答案:

答案 0 :(得分:0)

您应该阅读错误消息:

SQL0811N The result of a scalar fullselect, SELECT INTO statement, or VALUES INTO statement is more than one row

因此,您的查询返回更多行,DB2不知道将哪一行分配给您的set子句。 更正您的查询 - 可能添加一个独特的(取决于您的需要) - 并再试一次