如何用SQL通过OR语句从两列取值填充Custom Column自定义列
SQL实现方案
首先假设你使用的表名为data_table,你可以通过以下两种方式实现需求,均符合OR逻辑判断规则:
1. 仅查询返回填充后的结果(不修改原表)
SELECT ID, CASE -- 核心OR逻辑判断两个字段至少有一个非空 WHEN Value IS NOT NULL OR Value2 IS NOT NULL THEN IF(Value IS NOT NULL, Value, Value2) ELSE NULL END AS `Custom column`, Value, Value2 FROM data_table;
2. 直接更新原表的Custom column字段
UPDATE data_table SET `Custom column` = CASE WHEN Value IS NOT NULL OR Value2 IS NOT NULL THEN CASE WHEN Value IS NOT NULL THEN Value ELSE Value2 END ELSE NULL END;
注意事项
- 以上是标准SQL写法,兼容所有主流数据库。如果你的数据库支持
COALESCE函数,可以简化为COALESCE(Value, Value2),本质逻辑和上面的OR判断完全一致,都是取第一个非空值。 - 字段名包含空格时需要对应转义:MySQL用反引号包裹,SQL Server用方括号,Oracle用双引号。
- 执行UPDATE操作前建议先运行SELECT语句验证结果,避免误操作。
内容的提问来源于stack exchange,提问作者Dar Shavit
相关产品推荐
相关产品推荐

