用另一个表的列更新表的一列(一对多关系)

时间:2019-01-07 17:04:02

标签: mysql sql

谢谢您的时间。

这就是我想要做的。我想用另一个表的信息更新一个表的列。

tableA

in_number
date

tableB

in_number
anchor_date

现在tableA,每个元组都有in_number个。但是tableB有几个in_number。它具有一对多的关系。无论如何,当两个表中的in_number匹配时,我想用tableA中的日期更新tableB中的anchor_date。我怎样才能做到这一点?

我尝试过

UPDATE TableB t1, tableA t2
    SET t1.anchor_date= t2.date 
    WHERE t2.in_number = t1.in_number;

但这只会更新每个in_number一行。

请帮助

2 个答案:

答案 0 :(得分:1)

首先,您可能应该在join查询中使用select查找日期,而不是在表之间复制数据。让我假设您有充分的理由进行数据重复。

第二,您的查询应该可以工作,但最好使用显式join语法编写:

UPDATE TableB b JOIN
       TableA a
       USING (in_number)
    SET b.anchor_date = a.date ;

答案 1 :(得分:0)

您可以在下面的SQL查询中尝试。

更新b设置anchor_date = a.date 从tableb b 内联表 在a.in_number = b.in_number