在这种情况下,我创建了2个表:
项目:
push
模块:
saveProduct.push is not a function
我已经将数据插入了项目表:
CREATE TABLE projects (
ID int(5) NOT NULL,
PROJECT_NAME varchar(50) NOT NULL
);
现在,我想将数据插入“模块”表中,但不插入ID_PROJECT。我想从“项目”表中插入PROJECT_NAME。当我尝试使用贝娄命令时:
CREATE TABLE modules (
ID_MODULE int(11) NOT NULL,
NAME varchar(50),
ID_PROJECT int(11) DEFAULT NULL
);
显示错误:
但是当我这样写的时候:
INSERT INTO projects (ID, PROJECT_NAME) VALUES
(1, 'BOX'),
(2, 'Duck')
它没有显示任何错误,但是没有在“模块”表中插入任何行记录。
我有一个问题,是否可以通过内部联接另一个表(内部联接“项目”表)插入“模块”表值?如果是,请告诉我该怎么办。寻求帮助。
例如:
在“模块”表中,我没有插入任何内容。但是要插入数据:
INSERT INTO modules (ID_MODULE, NAME, projects.PROJECT_NAME)
SELECT 1, 'S-BOX', projects.PROJECT_NAME
FROM modules INNER JOIN projects
ON modules.ID_PROJECT = projects.ID AND projects.PROJECT_NAME = 'BOX';
答案 0 :(得分:0)
1)您的第一个查询不正确,尤其是这部分INSERT INTO modules (ID_MODULE, NAME, --> projects.PROJECT_NAME)
。您不能从另一个不同的表中定义要插入的另一列。
2)您的第二个查询是正确的。但是,如果根据此处的示例,由于您的查询对INNER JOIN
表为空,则将不插入任何数据。您可以尝试插入而无需执行modules
,如下所示:
INNER JOIN
我认为上面的查询可以工作,但是您会看到以下消息:
INSERT INTO modules (ID_MODULE, NAME, ID_PROJECT)
SELECT 1, 'S-BOX', projects.PROJECT_NAME
FROM projects
WHERE projects.PROJECT_NAME='BOX';
因为如果您查看Warning Code : 1265
Data truncated for column 'ID_PROJECT' at row 1
的列数据类型为projects.PROJECT_NAME
,而varchar(50)
的数据类型为modules.ID_PROJECT
。基本上,当您查看int(11)
中插入的数据时,将看到modules.ID_PROJECT
(或者也许是0
),而不是NULL
中的原始值。因此,您需要确保您的列数据类型匹配以保留原始数据。