mysql基于另一个tables值更新表

h5qlskok  于 2021-06-18  发布在  Mysql
关注(0)|答案(7)|浏览(395)

我有两张table,
这是我的第一张table,

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

这是我的第二张table,

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

我需要了解如何使用第一个表中的数据更新第二个表中的所有行。
它需要在一个更新查询中完成这一切。
subst\u id和serial\u id都匹配,它需要从第一个表中获取创建的\u id并将其插入到第二个表中。
所以第二张table会变成,

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

感谢您的帮助和指导。

wnrlj8wa

wnrlj8wa1#

使用 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;

0s0u357o

0s0u357o2#

我觉得这应该管用

UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
jjjwad0x

jjjwad0x3#

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

vybvopom4#

你也可以用这个:

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

但以我的经验,我可以说,这种方式是如此缓慢,不建议它!

k3bvogb1

k3bvogb15#

除tom的回答外,如果您需要频繁重复操作并想节省时间,您可以:

UPDATE TABLE1
       JOIN TABLE2
       ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET    TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
pkln4tw6

pkln4tw66#

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='';
yftpprvb

yftpprvb7#

在sql中使用内部连接查询进行更新非常简单,不需要使用 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";

相关问题