如何基于关联表更新SQL Server中TableB的空Event_Id列
关联表更新TableB的空Event_Id字段
你可以通过表关联+条件过滤的方式实现需求,替代手动编写CASE语句,后续TableA新增事件时无需修改更新逻辑,维护更便捷。
针对SQL Server的写法
UPDATE B SET B.Event_Id = A.Event_Id FROM TableB B INNER JOIN TableA A ON B.Extra = A.Event_Name WHERE B.Event_Id IS NULL AND B.Extra IS NOT NULL -- 排除Extra为空的记录,避免无效匹配
针对MySQL的写法
UPDATE TableB B INNER JOIN TableA A ON B.Extra = A.Event_Name SET B.Event_Id = A.Event_Id WHERE B.Event_Id IS NULL AND B.Extra IS NOT NULL
关键说明
- 用
INNER JOIN关联两张表,通过Extra与Event_Name的匹配关系,直接从TableA获取对应Event_Id赋值给TableB WHERE子句限制仅更新Event_Id为NULL的记录,同时排除Extra为空的记录(比如示例中Ronal的数据),避免无意义的匹配操作- 如果数据库对字符串大小写敏感,可通过大小写转换函数统一匹配规则,示例如下:
-- SQL Server/MySQL 通用忽略大小写写法 ON LOWER(B.Extra) = LOWER(A.Event_Name)
内容的提问来源于stack exchange,提问作者aasenomad
相关产品推荐
相关产品推荐

