我有一条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 = ?
)
答案 0 :(得分: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
中的聚合函数。