Mysql ВСТАВИТЬ / ВЫБРАТЬ на основе объединения?

#mysql

#mysql

Вопрос:

 INSERT INTO Comment (info, pID, cID) VALUES(?,?,?) 
SELECT Comm.cID
FROM Professor P, Comment Comm, Course Cou 
WHERE P.pID = Comm.pID
AND Cou.cID = Comm.cID;
  

Итак, в основном я пытаюсь вставить поля info, pID и cID, где pID и cID уже заполнены, но cID извлекается из таблицы комментариев.

Возможно ли это? Если да, то что не так с моим синтаксисом.

Очень признателен.

Ответ №1:

Вы действительно говорите об обновлении строк?

 UPDATE Comment 
SET info = something
FROM Professor P, Comment Comm, Course Cou 
WHERE P.pID = Comm.pID
AND Cou.cID = Comm.cID;
  

В качестве альтернативы, если вы просто создаете новые строки комментариев, полученные из существующих данных (зачем?):

 INSERT INTO Comment (info, pID, cID)
SELECT something /* what'sinfo */, P.pID, Comm.cID
FROM Professor P, Comment Comm, Course Cou 
WHERE P.pID = Comm.pID
AND Cou.cID = Comm.cID;
  

Ответ №2:

вам нужно иметь одно значение в каждой из позиций выбора, которое соответствует инструкции insert.

в вашем примере вы вводите только одно значение и пытаетесь заполнить 3 значения.

кроме того, вам не нужно предложение VALUES() при использовании синтаксиса SELECT.

 insert into ABC( a,b,c )
select 1,'bbb', 'ccc' from dual