我创建了两个表t1
,t2
,并将CSV中的数据加载到这些表中。
我必须创建一个新的PK列,因为现有的列(t1.old_id
,t2.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
答案 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}的身份列时删除歧义}}