ORA-01427:单行子查询返回多个行,更新表整列时发生错误

[复制链接]
查看11 | 回复2 | 2014-2-18 16:43:09 | 显示全部楼层 |阅读模式
在做.csv文件数据资源采集的过程中,采集脚本运行报错ORA-01427:单行子查询返回多个行!
根据日志信息,程序是运行在如下sql时报错的:
update TMP0702110256001 set related_cell_ci = (select int_id from tmp_TMP0702110256001_cellwhere userlabel = TMP0702110256001.related_cell_name)
表的数据量为十几万,在网上搜索了下关于该错误的解释,也就得出个更新时应该是一对一,如果出现一对多就会报错。但是这无法帮助我具体定位到是哪一条数据导致了错误!?因为该脚本最开始采集的时候是没有报这个错的,数据能够正常采集入库。现在采集一直报该错误,应该是提供的.csv数据源有问题,所以需要去定位到是数据文件里面的哪条记录导致这个错误的发生,我让数据源方去核查!
请坛子里的oracle高手帮忙看一下,非常感谢!!!

回复

使用道具 举报

千问 | 2014-2-18 16:43:09 | 显示全部楼层
tmp_TMP0702110256001_cell 表上的userlabel列上有重复值。
回复

使用道具 举报

千问 | 2014-2-18 16:43:09 | 显示全部楼层
这样写:
update TMP0702110256001 set related_cell_ci = (select int_id from tmp_TMP0702110256001_cellwhere userlabel = TMP0702110256001.related_cell_name) where exists (select1 from tmp_TMP0702110256001_cellwhere userlabel = TMP0702110256001.related_cell_name)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行