我有下一个表设置,两个表由一个中间表相关,如下所示:
客户端
| client_id | ...|field_X |
| 1 | ...|value1 |
| 2 | ...|value2 |
| 3 | ...|value3 |
项目
| project_id | ...|field_X |
| 1 | ...| |
| 2 | ...| |
| 3 | ...| |
| 4 | ...| |
| 5 | ...| |
| 6 | ...| |
| 7 | ...| |
client_project
| client_id | project_id|
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 2 | 5 |
| 3 | 6 |
| 3 | 7 |
表项目中的field_x是新的,我必须用表客户端的数据填充它以获得类似这样的内容:
项目
| project_id | ...|field_X |
| 1 | ...| |
| 2 | ...|value1 |
| 3 | ...|value1 |
| 4 | ...|value2 |
| 5 | ...|value2 |
| 6 | ...|value3 |
| 7 | ...|value3 |
我不知道处理中间表的热点。我试过这段代码,但它不起作用。
INSERT INTO project
(field_x)
(select field_x
from
client_project
inner join
client
where client_project.client_id = client.client_id
);
我知道我必须做什么,但由于中间表,我无法将其转换为sql命令。有人可以解释如何处理它吗?
提前致谢。
答案 0 :(得分:0)
我假设您已经拥有project
表中的所有条目但是它们缺少Field_X属性?所以你需要的是更新,而不是插入
UPDATE project p, client c, project_client pc SET p.Field_X=c.Field_X WHERE p.ID=pc.ProjectID AND c.ID=pc.ClientID
但是,请注意,在两个地方拥有相同的数据并不是一个好习惯;如果可能的话,总是只在一个地方放一个事实。