SQL技术问题:如何用ColumnA值填充ColumnB空字段且不覆盖已有值
用SQL实现ColumnA值填充ColumnB空字段(不覆盖已有值)
嗨,这个场景我经常碰到,直接用带条件的更新语句就能完美解决,下面给你详细拆解:
需求明确
- 目标数据表包含
ColumnA、ColumnB、ColumnC三个字段 - 要把
ColumnA的有效值填充到ColumnB的空字段里 - 关键约束:绝对不能覆盖
ColumnB中已经存在的非空值
数据示例对比
原数据表
| ColumnA | ColumnB | ColumnC |
|---|---|---|
| x | x | |
| y | y | |
| x | ||
| f | f |
处理后的数据表
| ColumnA | ColumnB | ColumnC |
|---|---|---|
| x | x | x |
| y | y | |
| x | x | |
| f | f | f |
解决方案SQL语句
直接使用带精准条件的UPDATE语句,只针对ColumnB为空且ColumnA不为空的行进行更新,这样就完全不会覆盖已有值:
UPDATE mytable SET ColumnB = ColumnA WHERE ColumnB IS NULL AND ColumnA IS NOT NULL;
小提示
如果你的数据库里空值是用**空字符串('')**表示而不是标准的NULL,可以把条件调整成这样:
UPDATE mytable SET ColumnB = ColumnA WHERE ColumnB = '' AND ColumnA != '';
根据你实际的数据格式灵活调整就行~
内容的提问来源于stack exchange,提问作者Mr.Shazam
相关产品推荐
相关产品推荐

