UPDATE T_CGHTGZCX137 SET F_RKDDHSL = (SELECT SUM(KCRKD2_SSSL) FROM HMHTGY,KCRKD2,BFGBD,BFGBGL WHERE BFGBD_LSBH = 
KCRKD2_GBDLS AND HMHTGY_LSBH = BFGBGL_LYLS AND BFGBGL_LSBH = BFGBD_LSBH GROUP BY HMHTGY_LSBH) WHERE F_HTBH IN (SELECT HMHTGY_HTBH FROM HMHTGY,KCRKD2,BFGBD,BFGBGL WHERE BFGBD_LSBH = KCRKD2_GBDLS AND HMHTGY_LSBH = BFGBGL_LYLS AND BFGBGL_LSBH = BFGBD_LSBH)
由于子查询返回了两行 所以不能UPDATE了 想问一下除了写存储过程 使用游标以外有没有别的方法解决?

解决方案 »

  1.   

    UPDATE T_CGHTGZCX137
       SET F_RKDDHSL = (SELECT SUM(KCRKD2_SSSL)
                          FROM HMHTGY, KCRKD2, BFGBD, BFGBGL
                         WHERE BFGBD_LSBH = KCRKD2_GBDLS
                           AND HMHTGY_LSBH = BFGBGL_LYLS
                           AND BFGBGL_LSBH = BFGBD_LSBH
                         GROUP BY HMHTGY_LSBH)
     WHERE F_HTBH IN (SELECT HMHTGY_HTBH
                        FROM HMHTGY, KCRKD2, BFGBD, BFGBGL
                       WHERE BFGBD_LSBH = KCRKD2_GBDLS
                         AND HMHTGY_LSBH = BFGBGL_LYLS
                         AND BFGBGL_LSBH = BFGBD_LSBH)
    这样看着舒服点。
    你想用一句sql解决吗?
    太菜,不知道。反正就2行你选查出来,在一行一行更新。等大侠
      

  2.   

    子查询返回了两行记录,那么你到底要哪个啊? 子查询条件中加上 AND ROWNUM=1 吗?