Sql ORA-01427:单行子查询返回多行更新

Sql ORA-01427:单行子查询返回多行更新,sql,oracle,sql-update,ora-01427,Sql,Oracle,Sql Update,Ora 01427,我有一个update语句,起初它处理一些数据,但过了一段时间,我的一些注册表出现了问题,我得到了以下错误: ORA-01427:单行子查询返回多行。我认为这是错误,因为查询可能返回重复的ID,所以我放置了一个DISTINCT,但我一直得到相同的错误,有人知道这可能是什么吗 查询如下: UPDATE TABLE_DETAIL DET SET DET.ACCEPTED=?, DET.VALUE_ACCEPTED=(SELECT RES.

我有一个update语句,起初它处理一些数据,但过了一段时间,我的一些注册表出现了问题,我得到了以下错误: ORA-01427:单行子查询返回多行。我认为这是错误,因为查询可能返回重复的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 = ? 
        )

您不需要使用
中的
选择DISTINCT

问题的最接近原因是以下代码:

    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), 
真的不可能说出如何修复它。错误代码似乎很清楚:此查询返回了多行


如果需要任意值,可以添加
,其中rownum=1
。或者选择
中的聚合函数

它是接受的
DET.VALUE\u=(从…
导致问题的子查询中选择RES.VALUE。我选中了这个选项,我使用实际值查询了SELECT,只得到了一行,我将DISTINCT放在其中返回了两个值,然后我用它来查询更新中的SELECT,它只有一行row@Alex…将
和rownum=1
添加到子查询中,并查看问题消失了。