首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

救助:ora-01427:单行子查询返回多个行,该怎么处理

2013-01-26 
救助:ora-01427:单行子查询返回多个行本帖最后由 jin2106 于 2012-11-03 19:19:55 编辑要将dwu_bqf_item_d

救助:ora-01427:单行子查询返回多个行
本帖最后由 jin2106 于 2012-11-03 19:19:55 编辑 要将dwu_bqf_item_day 中的lastyear_value 更新为bq_data_lastyear 表中的lastyearvalue值。
dwu_bqf_item_day (DATA_DATE,ITEM_CODE,CORP_CODE)等字段
bq_data_lastyear (DATA_DATE,ITEM_CODE,CORP_CODE)等字段
语句是以下这样写的:
  Update dwu_bqf_item_day a
         Set a.lastyear_value = (select b.lastyearvalue
                                   from bq_data_lastyear b
                                  where a.corp_code = b.corp_code
                                    and a.item_code = b.item_code)
       Where exists (select 1
                from bq_data_lastyear b
               where a.corp_code = b.corp_code
                 and a.item_code = b.item_code)
[解决办法]
Update dwu_bqf_item_day a
         Set a.lastyear_value = (select b.lastyearvalue
                                   from bq_data_lastyear b
                                  where a.corp_code = b.corp_code
                                    and a.item_code = b.item_code and rownum=1)
       Where exists (select 1
                from bq_data_lastyear b
               where a.corp_code = b.corp_code
                 and a.item_code = b.item_code) 
[解决办法]
你的这个子查询返回多行结果
select b.lastyearvalue
from bq_data_lastyear b
where a.corp_code = b.corp_code
and a.item_code = b.item_code

可以是有聚合函数,比如max() min() ……
也可以像一楼一样
[解决办法]

引用:
Update dwu_bqf_item_day a
         Set a.lastyear_value = (select b.lastyearvalue
                                   from bq_data_lastyear b


                                  where a.c……


加rownum=1就行,只要你确定返回的多行都是相同值

热点排行