Sql ORA-01427:单行子查询返回多行更新
我有一个update语句,起初它处理一些数据,但过了一段时间,我的一些注册表出现了问题,我得到了以下错误: ORA-01427:单行子查询返回多行。我认为这是错误,因为查询可能返回重复的ID,所以我放置了一个DISTINCT,但我一直得到相同的错误,有人知道这可能是什么吗 查询如下: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
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
添加到子查询中,并查看问题消失了。