对比两张表指定列值,按条件更新表A数据的技术需求
需求与解决方案:基于两表Marks列的条件更新
需求说明
- 对比表A和表B中
Name匹配行的Marks列值 - 当表A的
Marks与表B对应行的Marks不相等时,更新表A的Marks为A.Marks - B.Marks - 若两行
Marks值相等,则保持表A的Marks不变
原始表数据
表A
Name Marks Amit 23 Rahul 12 Gaur 10
表B
Name Marks Amit 34 Rahul 10 Gaur 10
实现方案(SQL语句)
MySQL 写法
使用UPDATE JOIN语法关联两表并执行条件更新:
UPDATE TableA A JOIN TableB B ON A.Name = B.Name SET A.Marks = A.Marks - B.Marks WHERE A.Marks != B.Marks;
SQL Server 写法
通过FROM子句关联表进行更新:
UPDATE A SET A.Marks = A.Marks - B.Marks FROM TableA A INNER JOIN TableB B ON A.Name = B.Name WHERE A.Marks != B.Marks;
执行后结果
更新完成后,表A的数据如下:
Name Marks Amit -11 Rahul 2 Gaur 10
内容的提问来源于stack exchange,提问作者user22094638
相关产品推荐
相关产品推荐

