
ORA-01427:单行子查询返回多个行
今天sql进行查询时,执行sql语句弹出单行子查询返回多个行的错误提示经过整改解决了这个问题1.错误产生原因原sql语句(为方便理解进行简化):select * from 表a a where a.name = (select b.namefrom 表b b where b.name = '张三' )原本想通过()中的内容赋予a.name值,但后方select返回的可能是多行数据,例如idname
今天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
# 软件工程
# 数据库开发