如图:
图1
图2
我想通过图1中的dept_code_8字段来进行选择,有相同的dept_code_8就把dept_code_9选择出来,插入图2中对应的dept_code_9这一列,该怎么实现。我写的下面这段代码报错:单行子查询返回多个值update TMP_FINAL 
set TMP_FINAL.dept_code_9=
(select tmp_huiduishuju.dept_code_9
from tmp_huiduishuju
where tmp_final.dept_code_8=tmp_huiduishuju.dept_code_8)注意是在oracle数据库中更新表。求指点

解决方案 »

  1.   

    错误已经说的很明白了,是因为一个行的值仅能插入一个数值,你是把多个值插入到了一列中,所以就报错了。我的解决方法是,你先用分析函数,按照dept_code_8进行分组,按照dept_code_9进行排序,在每列后面加个序列号。然后,再更新时,只取序列号=2的值,这样就不会报错了
      

  2.   

    原因是TMP_FINAL一个行的dept_code_8对应于tmp_huiduishuju表中中的dept_code_8有多个dept_code_9。
    你看下业务,是不是一一对应的,如果是就是数据问题。如果不是,需要取出分组后的哪一个。
      

  3.   

    如果dept_code_8重复不多的话也可以先把重复的去掉再执行你的更新,过后再看业务情况补充重复的
      

  4.   

    update TMP_FINAL 
    set TMP_FINAL.dept_code_9=
    (select tmp_huiduishuju.dept_code_9
    from tmp_huiduishuju
    where tmp_final.dept_code_8=tmp_huiduishuju.dept_code_8 and rownum <=1)
    where exists(select 1 from tmp_huiduishuju where tmp_final.dept_code_8=tmp_huiduishuju.dept_code_8)如果重复的就选择第一个