基于另一张表的列更新TableA中Code列的SQL技术问题
解决TableA Code列更新为TableB对应带描述值的问题
需求说明
需要将TableA的Code列,更新为TableB中相同Member_ID对应的带描述的Code值(例如101: Leg这类格式)。
原SQL问题分析
你提供的SQL语句错误地对TableB的Code做了纯数字截取,这和需求完全相反,所以无法得到带描述的目标值:
UPDATE TableA SET code = SUBSTRING(TableB.code, 1, PATINDEX('%[^0-9]%', TableB.code+'X')-1) FROM TableA JOIN TableB ON TableA.Member_ID = TableB.Member_ID
正确SQL语句
直接将TableB中对应Member_ID的完整Code值赋值给TableA即可:
UPDATE TableA SET code = TableB.code FROM TableA INNER JOIN TableB ON TableA.Member_ID = TableB.Member_ID
补充说明
如果需要仅更新TableA中存在匹配Member_ID的行,上述INNER JOIN已经满足;如果要处理TableA中无匹配的行(比如设为NULL或其他默认值),可以改用LEFT JOIN并添加条件:
UPDATE TableA SET code = CASE WHEN TableB.code IS NOT NULL THEN TableB.code ELSE NULL END FROM TableA LEFT JOIN TableB ON TableA.Member_ID = TableB.Member_ID
内容的提问来源于stack exchange,提问作者Brockytoosocky
相关产品推荐
相关产品推荐

