更新查询缺少右括号

时间:2014-02-04 15:42:09

标签: oracle

UPDATE CONVERTED T1 
   SET PARENTID = (SELECT ID FROM 
                  CONVERTED T2 WHERE T2.ID < T1.ID 
                  AND T1.PREVOBJNUM = T2.OBID 
                  AND ROWNUM = 1 
                  ORDER BY ID DESC)

给我以下错误

L Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"

如果我删除了ORDER BY,它就可以了。知道怎么解决吗?

1 个答案:

答案 0 :(得分:2)

您在该声明中无法获得订单。像这样修改它来绕过限制。此外,如果您想要返回正确的记录,我建议将rownum移到第二个选择之外。 Rownum在内部选择中将不正确,因为它在orderby之前应用。如果您按内部选择中的rownum进行过滤,那么您是否会选择最大ID,这是您想要的最终ID。

UPDATE CONVERTED T1 
   SET PARENTID = (
    SELECT ID FROM (
        SELECT ID FROM 
        CONVERTED T2 WHERE T2.ID < T1.ID 
        AND T1.PREVOBJNUM = T2.OBID 
        ORDER BY ID DESC)
    WHERE ROWNUM = 1 
    )