66

我有两张桌子,

这是我的第一张桌子,

ID      SUBST_ID        CREATED_ID
1       031938          TEST123
2       930111          COOL123
3       000391          THIS109
4       039301          BRO1011
5       123456          COOL938
...     ...             ...

这是我的第二张桌子,

ID      SERIAL_ID       BRANCH_ID
1       039301          NULL
2       000391          NULL
3       123456          NULL
...     ...             ...

我需要一些如何使用我的第一个表中的数据更新我的第二个表中的所有行。

它需要在一个更新查询中完成所有这些操作。

SUBST_ID 和 SERIAL_ID 都匹配,它需要从第一个表中获取 created_id 并将其插入到第二个表中。

所以第二个表将变为以下,

ID      SERIAL_ID       BRANCH_ID
1       039301          BRO1011
2       000391          THIS109
3       123456          COOL938
...     ...             ...

感谢您的帮助和指导。

4

7 回答 7

160
UPDATE TABLE2
       JOIN TABLE1
       ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
于 2012-09-12T18:58:01.757 回答
23

如果您需要经常重复操作并希望节省时间,除了汤姆的回答之外,您还可以执行以下操作:

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
于 2013-10-13T16:17:31.260 回答
5
UPDATE TABLE2
       JOIN TABLE1
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID 
WHERE TABLE2.BRANCH_ID IS NULL or TABLE2.BRANCH_ID='';
于 2015-05-26T06:25:41.220 回答
4

我认为这应该有效

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
于 2012-09-12T18:57:05.097 回答
3

在 SQL 中使用 Inner join 查询更新非常简单。您可以 使用 FROM子句进行更新。这是一个例子:

    UPDATE customer_table c 

      INNER JOIN  
          employee_table e
          ON (c.city_id = e.city_id)  

    SET c.active = "Yes"

    WHERE c.city = "New york";
于 2020-07-20T13:08:11.323 回答
1

使用INNER JOIN

UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;

另一种替代解决方案,如下所示:这里我使用的是WHERE子句而不是JOIN

UPDATE 
    TABLE1,
    TABLE2
WHERE
    TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET 
    TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
于 2017-01-02T10:59:07.743 回答
1

你也可以使用这个:

update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)

但是以我的经验我可以说这种方式太慢了,不推荐!

于 2017-11-30T14:49:29.237 回答