Oracle缺少右括号

时间:2009-10-07 21:22:08

标签: sql oracle oracle10g ora-00907

这是我的问题:

SELECT * FROM Auta WHERE SUBSTR(spz, 1, 2) = 
(SELECT SUBSTR(spz, 1, 2) FROM Auta WHERE typ = 'BMW' AND specifikacia_typu = 'Z1' LIMIT 1);

当我运行它时,我收到了这个错误:

ORA-00907: missing right parenthesis

我有点绝望,我已经尝试在查询中的任何地方添加括号,我仍然得到错误?查询中有3个左括号和3个右括号,所以一切都应该没问题。

3 个答案:

答案 0 :(得分:7)

Oracle中不存在LIMIT子句。相反,你会使用rownum:

SELECT *
  FROM Auta
 WHERE SUBSTR(spz, 1, 2) = (SELECT SUBSTR(spz, 1, 2)
                              FROM Auta
                             WHERE typ = 'BMW'
                               AND specifikacia_typu = 'Z1'
                               AND ROWNUM = 1);

答案 1 :(得分:3)

“LIMIT 1”是什么?我不相信这是正确的Oracle语法。如果您尝试将输出限制为一行,请使用:

WHERE rownum = 1

答案 2 :(得分:3)

就我所知,LIMIT 1是一种MySQL主义。

  SELECT *
    FROM Auta
   WHERE SUBSTR(spz, 1, 2) =
         (SELECT SUBSTR(spz, 1, 2)
          FROM Auta
         WHERE typ = 'BMW'
           AND specifikacia_typu = 'Z1'
           AND ROWNUM = 1);

...应该给你预期的结果