基于Join的Mysql INSERT / SELECT?

时间:2011-04-12 21:33:01

标签: 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,但是正在从Comment表中提取cID。

这可能吗?如果是这样,我的语法错误。

非常感谢。

2 个答案:

答案 0 :(得分:2)

你真的在谈论更新行吗?

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;

答案 1 :(得分:0)

您需要在与insert语句对应的每个选择位置都有一个值。

在您的示例中,您只需提取一个值,并尝试填充3个值。

另外,使用SELECT语法时不需要VALUES()子句。

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