我有两张桌子,
这是我的第一张表,
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
... ... ...
感谢您的帮助和指导。
答案 0 :(得分:111)
UPDATE TABLE2
JOIN TABLE1
ON TABLE2.SERIAL_ID = TABLE1.SUBST_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
答案 1 :(得分:16)
除了汤姆的回答,如果您需要经常重复操作并希望节省时间,您可以这样做:
UPDATE TABLE1
JOIN TABLE2
ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID
WHERE TABLE2.BRANCH_ID IS NULL
答案 2 :(得分:3)
我认为这应该有用
UPDATE secondTable
JOIN firsTable ON secondTable.SERIAL_ID = firsTable.SUBST_ID
SET BRANCH_ID = CREATED_ID
答案 3 :(得分:2)
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='';
答案 4 :(得分:0)
使用string
:
INNER JOIN
另一种替代解决方案如下:我在这里使用UPDATE TABLE1
INNER JOIN TABLE2 ON TABLE1.SUBST_ID = TABLE2.SERIAL_ID
SET TABLE2.BRANCH_ID = TABLE1.CREATED_ID;
子句代替WHERE
JOIN
答案 5 :(得分:0)
您也可以使用它:
update TABLE1 set BRANCH_ID = ( select BRANCH_ID from TABLE2 where TABLE1.SUBST_ID = TABLE2.SERIAL_ID)
但根据我的经验,我可以说这种方式很慢,不推荐它!
答案 6 :(得分:0)
使用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";