2016-09-23 53 views
0

我有更新表中的多個選擇行的問題。這是我的查詢。 任何人都知道什麼問題?如何更新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

+0

您可以執行SELECT的獨立? (所有版本,也就是子查詢和完整。) – jarlh

+0

* MEI_EMP_CAT_CD PS PS PS PS PS PS * 這是我result.it返回許多行 –

回答

0

你或許應該閱讀錯誤信息:

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

所以,你的查詢返回的行和DB2不知道分配給你的一套條款哪一個。 糾正您的查詢 - 也許增加一個獨特的(取決於您的需求) - 並再試一次

+0

Tq的YOUE用於幫助。是,對的。我的結果顯示很多行。但實際上,我真的想要更新所有的行一次。你有什麼想法嗎? –

+0

如果您想更新多個行,並使用從子查詢返回的每個單獨值 - 搜索更新中的相關子查詢。 – MichaelTiefenbacher