我是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)
谢谢(事先道歉成为新手)
答案 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;