为什么我会为此查询“缺少右括号”?

时间:2014-08-18 18:23:00

标签: sql oracle

此查询似乎完全合法,我不明白为什么我会收到此错误:

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);

1 个答案:

答案 0 :(得分:4)

Oracle在子查询中并不总是允许order by。在from子句中的子查询中允许它。否则,使用rownum获取第一个值不起作用。显然,它在in子句中不起作用。

可悲的是,这篇文章很难记录。在page documenting in上,它只指定允许子查询。在page documenting select上,子查询似乎被允许有order by子句。我不确定这是文档中的错误还是我误读了它。在任何情况下,此上下文中的order by都不会真正做任何事情。