ORA-01427:single-row subquery returns more than one row
来源:互联网 发布:同济大学软件研究生 编辑:程序博客网 时间:2024/05/01 04:22
今天开发的同事反馈一个问题,该程序已经使用一段时间,在查询昨天的数据时突然报出了错误:
图1 ORA-01427:single-row subquery returns more than one row
异常为:单行子查询返回多行
我得到了该查询页面对应的sql语句:
SELECT ID,(SELECT NAME FROM TABLE01 WHERE TID = t.id ) NAME FROM TABLE02 t WHERE TYPE = '1'
从sql语句能够猜出来错误应该是从子查询里返回的。
按照ORA-01427的错误,应该是子查询(SELECT NAME FROM TABLE01 WHERE TID = t.ID ) 返回了多行值。
验证一下,首先根据type='1'能够得到下面的查询结果
SQL>SELECT ID FROM TABLE02 t WHERE TYPE = '1'
ID
--------------------------------------------------
1
2
3
取出任意一条,然后按照两个表的关联字段值查询,可以看到输出大于一行数据。
SQL> SELECT NAME FROM TABLE01 WHERE TID = '3'
NAME
--------------------------------------------------------------------------------
3_NAME_01
3_NAME_02
3_NAME_03
所以这种情况的解决方案有几种:
* 这种方式可以输出结果而不会报错,存在冗余数据。
SELECT ID,NAME FROM TABLE01,TABLE02 t WHERE TID = t.id AND TYPE = '1'
* 另一种思路是在子查询中进行重复值的过滤,使用group by来完成。
SELECT ID,(SELECT NAME FROM TABLE01 WHERE TID = t.id GROUP BY NAME ) NAME FROM TABLE02 t WHERE TYPE = '1'
* 如果对这个问题进一步优化,可以在确认这个表结构的基础上,看看能够添加相应的约束,这样也能够保证表中的数据不会存在冗余,避免后续出现此类的问题。
* 与开发同事简单沟通,这个表中还是存在部分的脏数据,删除冗余的数据,问题就解决了,这种方案不用修改代码。
希望对你有帮助,祝你有一个好心情,加油!
- ORA-01427:single-row subquery returns more than one row
- ORA-01427single-row subquery returns more than one
- SQL Error: ORA-01427: single-row subquery returns more than one row
- Subquery returns more than 1 row
- MYSQL --Subquery returns more than 1 row
- MySQL:Subquery returns more than 1 row
- 错误代码: 1242 Subquery returns more than 1 row
- 报错 MYSQL --Subquery returns more than 1 row
- [Err] 1242 - Subquery returns more than 1 row
- 【MySQL】Subquery returns more than 1 row 解决方案
- 关于mysql错误:Subquery returns more than 1 row
- MYSQL --Subquery returns more than 1 row查询结果多于一行
- MYSQL --Subquery returns more than 1 row查询结果多于一行
- 报错java.sql.SQLException: Subquery returns more than 1 row
- MYSQL --Subquery returns more than 1 row查询结果多于一行
- MYSQL --Subquery returns more than 1 row查询结果多于一行
- MYSQL --Subquery returns more than 1 row查询结果多于一行
- Result consisted of more than one row
- 每日一linux命令(58)-------crontab命令
- 2016年春节大数据分析
- poj 2299 Ultra-QuickSort 树状数组求解逆序数
- AD10 快捷键(快捷键失灵 常用快捷键 换层中的快捷键* 和L的用法)
- Kafka设计解析:Kafka High Availability (上)
- ORA-01427:single-row subquery returns more than one row
- eclipse搭建NDK开发环境
- hbase_2_good
- 常见的Android 内存泄漏问题
- span margin is not working
- Cmake 编译opengl开源库glfw工程及使用
- 先做个小计划吧
- iOS 服务器文件有修改才进行下载
- iOS录音,调用麦克风话筒