风飘无殇 2021-10-22 09:25 采纳率: 50%
浏览 45

oracle关联多张表用一张表的一个字段更新另一张表的一个字段


UPDATE Files x 
SET ( x.Filename ) = nvl(
    (
        SELECT DISTINCT
            T7.lastfile 
            FROM--         Files T1,-- 附件文件名表
            Version T2,-- 版本表
            Version_File_Map T3,-- 版本文件名映射表
            Attachment T4,-- 附件表
            Item T5,-- 物料表
            Attachment_Map T6,-- 附件跟物料, 附件跟版本映射
            FILENAME_P T7 -- 物料,原名,新名,版本号
            
        WHERE
            x.Id = T3.File_Id 
            AND T2.Id = T3.Version_Id 
            AND T2.Attach_Id = T4.Id 
            AND T4.Id = T6.Attach_Id --         AND T2.Attach_Id = T6.Attach_Id
            
            AND T5.Id = T6.Parent_Id 
            AND T2.Attach_Id = T6.Attach_Id 
            AND x.File_Type = 'PDF' 
            AND T7.id = T5.Item_Number --             AND T5.ITEM_NUMBER = '110103000967'
            
            AND T7.firstfile = x.Filename --             AND T1.FILENAME = '110103000967_初始.PDF'
            
            AND T2.VERSION_NUM = T7.version --             AND T7.version = '1'
--         AND T1.id = x.id --         ) T WHERE lastfile = T.lastfile
            
        ),
        x.filename 
    )

运行结果是
ORA-01427: 单行子查询返回多个行

查询出来的是结果集,但是这就是我需要的啊,一张表的字段批量更新另一张表的一个字段,各位大神们,怎么搞啊

  • 写回答

2条回答 默认 最新

  • 唯一的小彬哥 2021-10-22 09:59
    关注

    ORA-01427: 单行子查询返回多个行 说明你子查询中返回超过1行,你需要加rownum= 1控制一下,或者加更多条件确保只返回一行

    评论

报告相同问题?

问题事件

  • 创建了问题 10月22日