You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中如何通过表关联条件更新列值

问题:根据关联邮箱更新表中custId字段值

原始数据表

table1

idnameemail
1Zackzack@email.com
2Adamadam@email.com
3Billybilly@email.com

table2(已新增custId列,默认值为0)

idcustIdemail
10zack@email.com
20adam@email.com
30billy@email.com

需求:将table2的custId列值更新为table1中对应邮箱的id值。

错误的尝试SQL

REPLACE INTO table2(custId)
    SELECT table2.id 
    FROM table1, table2 
    WHERE table1.email = table2.email

错误执行结果

idcustIdemail
10zack@email.com
20adam@email.com
30billy@email.com
41NULL
52NULL
63NULL

期望的正确结果

idcustIdemail
11zack@email.com
22adam@email.com
33billy@email.com

正确的SQL实现方法

方法1:UPDATE JOIN(MySQL等支持该语法的数据库)

这种方式效率较高,适合批量更新:

UPDATE table2
JOIN table1 ON table2.email = table1.email
SET table2.custId = table1.id;

方法2:子查询(通用语法,多数数据库兼容)

如果数据库不支持JOIN更新,可以用子查询方式:

UPDATE table2
SET custId = (
    SELECT id 
    FROM table1 
    WHERE table1.email = table2.email
);

内容的提问来源于stack exchange,提问作者Parama Artha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:23:14