此查询似乎完全合法,我不明白为什么我会收到此错误:
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
查询:
UPDATE "PROPS"
SET "PROPS"."FLAGGED" = NULL
WHERE "PROPS"."ID" IN
(SELECT "PROPS"."ID"
FROM "PROPS"
INNER JOIN "PINS"
ON "PROPS"."PIN_ID" = "PINS"."ID"
WHERE "PINS"."CIRCUIT_SPEC_ID" = 10248
AND "PROPS"."FLAGGED" = 'WARN'
ORDER BY pins.pin_type_id ASC);
答案 0 :(得分:4)
Oracle在子查询中并不总是允许order by
。在from
子句中的子查询中允许它。否则,使用rownum
获取第一个值不起作用。显然,它在in
子句中不起作用。
可悲的是,这篇文章很难记录。在page documenting in
上,它只指定允许子查询。在page documenting select
上,子查询似乎被允许有order by
子句。我不确定这是文档中的错误还是我误读了它。在任何情况下,此上下文中的order by
都不会真正做任何事情。