Подтвердить что ты не робот

Вложенное выражение SELECT в INSERT sql

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

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

Ответ 1

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

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

Ответ 2

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