Вложенный 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'
);
Это особенно важно, если подзапрос возвращает более одного значения. Тогда запрос может получить ошибку.
У меня была синтаксическая ошибка, потому что я забыл кавычки ('
) на "лечение".