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

如何使用结构差异较大的Table B更新Table A中的Age字段?

解决方案:通过Table B更新Table A的Age字段

要实现用Table B的Age字段值覆盖Table A中对应记录的Age字段(其余字段保留不变),核心是通过Name、Class、Subject、Marks这四个字段匹配两张表的对应记录(注:原描述中提到主键包含Age,但因Age是待更新字段,无法作为匹配条件,实际需用前四个字段关联)。以下是主流数据库的实现SQL:

MySQL

使用UPDATE JOIN语法直接关联更新:

UPDATE TableA a
JOIN TableB b 
  ON a.Name = b.Name 
  AND a.Class = b.Class 
  AND a.Subject = b.Subject 
  AND a.Marks = b.Marks
SET a.Age = b.Age;

SQL Server

通过UPDATE FROM实现关联更新:

UPDATE a
SET a.Age = b.Age
FROM TableA a
INNER JOIN TableB b 
  ON a.Name = b.Name 
  AND a.Class = b.Class 
  AND a.Subject = b.Subject 
  AND a.Marks = b.Marks;

Oracle

提供两种写法,优先推荐MERGE语句:

方式1:MERGE语句

MERGE INTO TableA a
USING TableB b
ON (
  a.Name = b.Name 
  AND a.Class = b.Class 
  AND a.Subject = b.Subject 
  AND a.Marks = b.Marks
)
WHEN MATCHED THEN
  UPDATE SET a.Age = b.Age;

方式2:UPDATE子查询

UPDATE TableA a
SET a.Age = (
  SELECT b.Age 
  FROM TableB b 
  WHERE a.Name = b.Name 
    AND a.Class = b.Class 
    AND a.Subject = b.Subject 
    AND a.Marks = b.Marks
)
WHERE EXISTS (
  SELECT 1 
  FROM TableB b 
  WHERE a.Name = b.Name 
    AND a.Class = b.Class 
    AND a.Subject = b.Subject 
    AND a.Marks = b.Marks
);

执行以上SQL后,Table A的Age字段会与Table B对应记录的Age保持一致,Address、City等其他字段不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:12:59