如何批量更新多列数据为Id值且保留NULL列?
解决方案
可以通过条件判断实现需求,以下是两种常用的简洁写法:
通用SQL写法(适配多数数据库:MySQL、SQL Server、PostgreSQL等)
UPDATE profile_table SET FirstName = CASE WHEN FirstName IS NOT NULL THEN Id ELSE FirstName END, LastName = CASE WHEN LastName IS NOT NULL THEN Id ELSE LastName END, Email = CASE WHEN Email IS NOT NULL THEN Id ELSE Email END WHERE Created_On >= '2024-08-01';
MySQL专属简化写法
如果使用MySQL数据库,可借助IF函数缩短代码:
UPDATE profile_table SET FirstName = IF(FirstName IS NOT NULL, Id, FirstName), LastName = IF(LastName IS NOT NULL, Id, LastName), Email = IF(Email IS NOT NULL, Id, Email) WHERE Created_On >= '2024-08-01';
逻辑说明
- 对每个目标字段做判断:若字段不为NULL,则替换为对应
Id的值;若为NULL,则保留原值 WHERE子句精准限定处理范围,避免修改不符合条件的记录- 单条UPDATE语句完成操作,高效且符合需求
内容的提问来源于stack exchange,提问作者Bing Hao
相关产品推荐
相关产品推荐

