0

我有一个更新语句,起初它处理了一些数据,但过了一段时间我遇到了一些 regiters 问题,我收到以下错误: ORA-01427: single-row subquery returns more than one row。我以为是 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 = ? 
        )
4

1 回答 1

0

你不需要SELECT DISTINCT.IN

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

    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.

于 2018-08-27T15:26:52.727 回答