15

これが機能しない理由を誰かに教えてもらえますか?

INSERT INTO Medical_History (pid, grafts, allergies,  diseases, surgearies, treatment)
VALUES ((SELECT pid FROM Pet WHERE pet_name='Jack' AND cid=(SELECT cid FROM Customer WHERE last_name='Iwannidis' AND first_name='Giwrgos')),
       'grafts', 'allergies', 'diseases', 'surgearies', treatments');

構文エラーが発生します。

unrecognized token "');"
4

2 に答える 2

27

ステートメントのselectネストは間違っているように見えます (すべてのデータベースがそれを受け入れるかどうかはわかりません)。valuesこれを表現するより典型的な方法は次のとおりです。

INSERT INTO Medical_History (pid, grafts, allergies,  diseases, surgearies, treatment)
    SELECT pid, 'grafts', 'allergies', 'diseases', 'surgearies', 'treatments'
    FROM Pet
    WHERE pet_name='Jack' AND
          cid=(SELECT cid
               FROM Customer
               WHERE last_name='Iwannidis' AND first_name='Giwrgos'
              );

これは、サブクエリが複数の値を返す場合に特に重要です。その場合、クエリでエラーが発生する可能性があります。

于 2013-05-28T01:35:36.783 に答える
1

'「治療」の引用符 ( ) を忘れたため、構文エラーが発生しました。

于 2013-05-28T01:36:59.133 に答える