【问题标题】:MySQL - update whole column with records from parent table?MySQL - 使用父表中的记录更新整个列?
【发布时间】:2016-05-07 06:46:19
【问题描述】:

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

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

t1 中的一条记录链接到t2 中的许多记录,我想保持这两个表之间的引用完整性。

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

这个t2.id is blank at the moment (as it is dependent ont1.id`)

我是否认为我需要一个 UPDATE 查询和一些描述的 JOIN 才能完成这项工作?

以下生成的数据正是我想要更新到我的 t2.id 列中的数据 - 但我不知道如何进行更新

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

【问题讨论】:

    标签: mysql join sql-update


    【解决方案1】:

    您可以像这样在UPDATE 语句中使用连接:

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

    【讨论】:

      【解决方案2】:

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

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

      *假设每个t1.old_id 都有一个t1.id

      在单独的说明中,您应该将 t2.id 命名为 t2.t1ID,以便在 t2 中有标识列以及命名为 id 时消除歧义 p>

      【讨论】:

      • 感谢您提供的附加信息,我有 t1_id 但没有在我的问题中输入它,但是非常欢迎这样的提示(本周开始 SQL)..我自己完成了一些如何在看到您的回复之前,不太确定如何!
      • 我将此标记为正确,因为它是我找到的解决方案,但其他工作也一样好并且更短!
      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 2021-02-13
      • 2012-11-22
      • 2023-04-04
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2019-03-08
      相关资源
      最近更新 更多