Oracle SQL语法错误(缺少右括号)

时间:2016-07-20 21:40:30

标签: sql oracle select syntax

我不明白为什么会引发语法错误(缺少右括号):

UPDATE table
SET doc =
  (SELECT 'table-2844-doc' || SUBSTR(doc_file, INSTR(doc_file, '.', -1))
   FROM docvers
   WHERE (docvers.table_name = 'other_table'
          AND docvers.field_name = 'doc')
     AND ROWNUM = 1
   ORDER BY VERSION DESC)
WHERE table_id = 2844

这看起来对我来说,在SQL Server中正确执行,并且类似于Oracle SQL: Update a table with data from another table中找到的请求。

任何提示?

1 个答案:

答案 0 :(得分:2)

这样做:

UPDATE table
SET doc = (
 select r.myval
 from (
 SELECT 'table-2844-doc' || SUBSTR(doc_file, INSTR(doc_file, '.', -1)) myval, ROWNUM RN
 FROM docvers
 WHERE docvers.table_name = 'other_table'
 AND docvers.field_name = 'doc'
 ORDER BY VERSION DESC
 ) r
 where r.RN = 1
)
WHERE table_id = 2844

首先选择包含ROWNUM的数据集,然后从该数据集中选择第一行。