子查询返回的值不止一个.当子查询跟随在 =,!=,<,<=,>,>= 之后,或子查询用作

UPDATEJSKLIBSETJSKLIB.LIB980=(selectsum(JSKLIB.LIB008)fromJSKLIB,JSKLIAWHEREJSKLIB.LI... UPDATE JSKLIB SET JSKLIB.LIB980=(select sum(JSKLIB.LIB008) from JSKLIB,JSKLIA WHERE JSKLIB.LIB001=JSKLIA.LIA001
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6))
这是我写的一个UPDATE更新语句,要求是更新字段JSKLIB.LIB980的值,条件是取JSKLIB.LIB008当月的和。但在执行语句时,提示“消息 512,级别 16,状态 1,第 2 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。”
请高手帮忙解答下,不甚感激!
展开
 我来答
帐号已注销
2021-09-06 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

addnumber>后面这个子查询,必须是一个值,如果是多个值的话,就会报这个错误。

既然要大于一个值,那么可以大于一个最大值,用max函数,或者联合写成相关子查询,外部表与内部表字段关联。

返回值可指定

函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。

在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。

quziguang

2013-06-01 · TA获得超过3481个赞
知道大有可为答主
回答量:4965
采纳率:84%
帮助的人:953万
展开全部
执行一下子查询select sum(JSKLIB.LIB008) from JSKLIB,JSKLIA WHERE JSKLIB.LIB001=JSKLIA.LIA001
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6) 看是否返回多于一行?
追问
是的,有多行记录,因为我是按品号求当月的和,然后回写到JSKLIB.LIB980字段的。也就是不同的品号各自按月求和。
追答
只有当子查询返回一行的时候,才会不报错.看看是否少了where条件?

建议子查询JSKLIB换一个别名以免和UPDATE语句的JSKLIB混淆

select sum(b.LIB008) from JSKLIB b,JSKLIA WHERE b.LIB001=JSKLIA.LIA001
and b.品号=JSKLIB.品号 --请自行修改此句

group by b.LIB003,substring(JSKLIA.LIA003,1,6)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式