ORA-01427:单行子查询返回的更新不只一行

时间:2018-08-27 15:24:12

标签: sql oracle sql-update ora-01427

我有一条update语句,起初它可以处理一些数据,但是过了一会儿我遇到了一些混音器问题后,出现了以下错误: ORA-01427:单行子查询返回多个行。我以为是IN,因为查询可能会返回重复的ID,所以我放了DISTINCT但我一直遇到相同的错误,有人知道这是什么吗?

以下查询:

 UPDATE 
        TABLE_DETAIL DET 
    SET 
        DET.ACCEPTED=?,
        DET.VALUE_ACCEPTED=(SELECT RES.VALUE FROM TABLE_RES RES WHERE RES.MYT=DET.MYT AND RES.RAD=DET.RAD AND RES.ITEM=DET.ITEM), 
    WHERE 
        DET.ID 
    IN (
        SELECT 
            DISTINCT DET_I.ID
            FROM TABLE_DETAIL DET_I, TABLE_RES RES_I, TABLE_REC REC 
            WHERE 
                DET_I.MYT = ? 
            AND 
                REC.TEMP 
                NOT IN (
                    SELECT DISTINCT TEMP 
                    FROM 
                    TABLE_IMAGES WHERE CODE=?) 
            AND RES_I.USER = ? 
        )

1 个答案:

答案 0 :(得分:0)

您不需要将SELECT DISTINCTIN一起使用。

您的问题的近因是此代码:

    DET.VALUE_ACCEPTED = (SELECT RES.VALUE FROM TABLE_RES RES WHERE RES.MYT=DET.MYT AND RES.RAD=DET.RAD AND RES.ITEM=DET.ITEM), 

实际上不可能说出解决方法。错误代码似乎很清楚:此查询返回了多个行。

如果需要任意值,可以添加WHERE rownum = 1。或SELECT中的聚合函数。