
正文
sqlserver单行子查询返回多行,单行子查询返回多个行 update
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
单行子查询返回多个行,这个sql错在哪呀?
这里的错误就在then和else后面的查询语句没有添加条件,会返回多条查询结果。
错误的原因在于set (BCXY_NUM) = 后面的那个查询子句,其返回的结果集有不止一条数据,就不能作为单个值赋给BCXY_NUM,故发生错误。如果单单为了消除错误,你可以给该子查询加一个条件rownum = 1,限制只取一个记录。
nvl是一个标量函数,在你的SQL语句中,nvl第一个参数是一个子查询。
此时数据库就会报错:单行子查询返回多行。基于上述原理,解决这个问题的关键在于你要理清楚数据间的业务逻辑关系,保证查询结果是按照主键查询的,即保证查询结果是惟一的一行数据。
相关问答
Q1: sql语句单行子查询返回多个行的问题
1、MySQL报Subquery returns more than 1 row这个错误的意思是指子查询的结果多于一行。解决方法:在子查询的条件语句末尾加 limit 1 。
2、这个错误是由于你的查询结果有多行造成的,因为你要into给变量a,所以只能查出一行,应该在where条件处控制,确保查询结果只有一样数据。这样就不会报错了。
3、“单行子查询返回多行”的错误修改不在于SQL语句的语法,而在于数据。
4、错误的原因在于set (BCXY_NUM) = 后面的那个查询子句,其返回的结果集有不止一条数据,就不能作为单个值赋给BCXY_NUM,故发生错误。如果单单为了消除错误,你可以给该子查询加一个条件rownum = 1,限制只取一个记录。
5、nvl是一个标量函数,在你的SQL语句中,nvl第一个参数是一个子查询。
6、对于case when ... then ... else的判断查询,当不满足条件或满足条件后,所要执行的语句的查询结果必须为一条,否则select就不知道你要选择哪一个来填充当前行了,所以会报单行子查询反回多个行的错误。
Q2: connectbyprior单行子查询返回多行
1、在SELECT命令中使用CONNECT BY 和蔼START WITH 子句可以查询表中的树型结构关系。其命令格式如下:SELECT 。。
2、SELECT t*,(SELECT SUM(sal)FROM test_table START WITH ID=tid CONNECT BY PRIOR ID=parent_id)FROM test_table t1 START WITH tID=1 CONNECT BY PRIOR tID=tparent_id 再看看别人怎么说的。
3、用上述语法的查询可以取得这棵树的所有记录。其中:条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
sqlserver单行子查询返回多行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单行子查询返回多个行 update、sqlserver单行子查询返回多行的信息别忘了在本站进行查找喔。






