MySQL:如何使用相关子查询将值从一个表插入到另一个表中?

时间:2017-03-20 00:29:02

标签: mysql subquery

我是MySQL的新手,我正在尝试执行以下操作:

我有一个表'链接',其中包含一个名为'project_id'的新列,以及一个名为'project'的现有列。我有一个名为'projects'的第二个表,其中有一个名为'id'的列。

我需要使用'links>的值project'循环遍历相应的id'项目> id',然后将其插入'链接> PROJECT_ID”。一旦完成,我们将不再需要'链接> project',as'links> project_id'将成为一个外键,然后我们可以简单地在'项目'中查找它。

我的伪sql代码(我是全新的)看起来像:

INSERT INTO links(project_id)
select id 
from projects
where project = links(project_id)

谢谢(事先道歉成为新手)

2 个答案:

答案 0 :(得分:0)

这是可行的,但假设每个project.project值与links.project字段完全匹配。

UPDATE links AS l
INNER JOIN (
    SELECT Id, project FROM project
    ) AS a ON a.project = l.project
SET l.project_id = p.Id 

这将更新project_id表格上的links字段,其中id表格中的projects字段与links.project中的值相匹配。

如果要创建新记录,请使用以下

INSERT INTO links (project_id)
SELECT Id FROM project p 
INNER JOIN links l ON l.project = p.project

在这两种情况下,INNER JOIN都会确保只有project中已有links等效记录的记录才能用于此操作。

答案 1 :(得分:-1)

是的,绝对,但请检查语法:

INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

https://dev.mysql.com/doc/refman/5.7/en/insert-select.html

INSERT with SELECT