gpt4 book ai didi

mysql - 如何将另一个表中的值插入到表中 - mysql 内连接

转载 作者:行者123 更新时间:2023-11-29 09:42:59 24 4
gpt4 key购买 nike

在本例中,我创建了 2 个表:

项目:

CREATE TABLE projects (
ID int(5) NOT NULL,
PROJECT_NAME varchar(50) NOT NULL
);

模块:

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

现在我想将数据插入“模块”表中,但不使用 ID_PROJECT。我想从“projects”表中插入 PROJECT_NAME。当我尝试使用以下命令时:

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

显示错误:

1054 - 字段列表中存在未知列“projects.PROJECT_NAME”

但是当我这样写时:

INSERT INTO modules (ID_MODULE, NAME, ID_PROJECT)
SELECT 1, 'S-BOX', projects.PROJECT_NAME
FROM modules INNER JOIN projects
ON modules.ID_PROJECT = projects.ID AND projects.PROJECT_NAME = 'BOX';

它没有显示任何错误,但没有将任何行记录插入到“modules”表中。

我有一个问题是否可以通过内部连接另一个表(内部连接“项目”表)插入“模块”表值?如果是,请告诉我应该做什么。感谢您的帮助。

例如:

在“模块”表中我没有插入任何内容。但想要插入数据:

ID_MODULE = 1
NAME = "S-BOX"
projects.PROJECT_NAME = "BOX" (which is inner joined on modules.ID_PROJECT = projects.ID)

最佳答案

1) 您的第一个查询不正确,尤其是这部分INSERT INTO module (ID_MODULE, NAME, -->projects.PROJECT_NAME)。您无法从与要插入的表不同的另一个表中定义另一列。

2) 您的第二个查询是正确的。但是,如果根据此处的示例,由于您的查询使用空的 modules 表执行 INNER JOIN ,因此不会插入任何数据。您可以尝试插入而不执行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),而不是来自的原始值projects.PROJECT_NAME = 'BOX'。因此,您需要确保列数据类型匹配以保留原始数据。

关于mysql - 如何将另一个表中的值插入到表中 - mysql 内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56231797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com