MySQL - 使用父表中的记录更新整个列?

时间:2016-01-29 13:47:02

标签: mysql join sql-update

我创建了两个表t1t2,并将CSV中的数据加载到这些表中。

我必须创建一个新的PK列,因为现有的列(t1.old_idt2.old_id)是自然是PK的字符串并不是绝对固定的(这似乎是建议不要?) 所以我在每个表格中创建了id PK INT AUTO_INCREMENT

因为t1中的一条记录与t2中的许多记录相关联,我希望在这两个表之间保持参照完整性。

我相信我需要做的是在id INT NOT NULL中创建t2作为FK

t2.id is blank at the moment (as it is dependent on t1.id`)

我是否正确地认为我需要UPDATE查询JOIN某些描述才能使其发挥作用?

以下内容生成的数据完全符合我要更新到t2.id列的内容 - 但我不知道如何进行更新

select t1.id
from t1
inner join t2
on t1.old_id = t2.old_id

2 个答案:

答案 0 :(得分:1)

您可以在UPDATE语句中使用联接,如下所示:

UPDATE t2 
    JOIN t1 ON t1.old_id = t2.old_id
SET t2.id = t1.id

答案 1 :(得分:0)

您可以使用这样的相关UPDATE查询

UPDATE t2
SET id = (SELECT MAX(t1.id) FROM t1 WHERE t1.old_id = t2.old_id);

*假设每个t1.id

只有一个t1.old_id

在单独的注释中,您应该将t2.id命名为t2.t1ID,以便在t2中有id以及{{1}的身份列时删除歧义}}