今天sql进行查询时,执行sql语句弹出单行子查询返回多个行的错误提示

经过整改解决了这个问题

1.错误产生原因

原sql语句(为方便理解进行简化):

select * from 表a a where a.name = (select b.name from 表b b where b.name = '张三' )

原本想通过()中的内容赋予a.name值,但后方select返回的可能是多行数据,例如

id name scode
1 张三 100
2 张三 60

此时()中的语句返回的就是多行数据

name
张三
张三

就会产生多行子查询返回多个行的错误

2.调整方法

此时只需在语句中加入and rownum<2限制他只返回一行即可

select * from 表a a where a.name = (select b.name from 表b b where b.name = '张三' and rownum<2)
# bug # 软件工程 # 数据库开发
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

  • 浏览量 2.2w
  • 收藏 0
  • 0

所有评论(0)

加载更多