Oracle отсутствует правильная скобка - PullRequest
1 голос
/ 08 октября 2009

Вот мой запрос:

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 ]

7 голосов
/ 08 октября 2009

Предложение LIMIT не существует в Oracle. Вместо этого вы бы использовали 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);
4 голосов
/ 08 октября 2009
Насколько я знаю,

LIMIT 1 - это MySQLism.

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

... должен дать ожидаемые результаты

4 голосов
/ 08 октября 2009

Для чего это "LIMIT 1"? Я не верю, что это правильный синтаксис Oracle. Если вы пытаетесь ограничить вывод одной строкой, используйте:

ГДЕ rownum = 1

...