Вложенный SELECT в инструкции SQL INSERT

Может кто-нибудь сказать мне, почему это не работает?

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

2 ответа

Решение

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

Это особенно важно, если подзапрос возвращает более одного значения. Тогда запрос может получить ошибку.

У меня была синтаксическая ошибка, потому что я забыл кавычки (') на "лечение".

Другие вопросы по тегам