1

これが私のクエリです:

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 つの右括弧があるため、すべて問題ありません。

4

3 に答える 3

8

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);
于 2009-10-07T21:28:26.280 に答える
4

その「LIMIT 1」は何のためですか?それが正しいOracle構文だとは思いません。出力を 1 行に制限しようとしている場合は、次を使用します。

WHERE 行番号 = 1

于 2009-10-07T21:29:24.500 に答える
4

私の知る限り、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);

...期待される結果が得られるはずです

于 2009-10-07T21:34:23.913 に答える