【问题标题】:how to update multiple select row in db2如何更新db2中的多选行
【发布时间】:2016-09-23 12:47:00
【问题描述】:

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

--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

【问题讨论】:

  • 你能独立执行 SELECT 吗? (所有版本,即子查询和完整。)
  • MEI_EMP_CAT_CD PS PS PS PS PS PS这是我的结果。它返回很多行

标签: sql select db2


【解决方案1】:

您可能应该阅读错误消息:

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

因此,您的查询返回更多行,而 DB2 不知道将哪一行分配给您的 set 子句。 更正您的查询-也许添加一个不同的(取决于您的需要)-然后再试一次

【讨论】:

  • Tq 为您提供帮助。是,对的。我的结果显示了很多行。但实际上,我真的很想一次更新所有行。你知道吗?
  • 如果您想使用从子查询返回的每个单独的值更新多行 - 在更新中搜索相关子查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2014-05-04
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多