You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中创建带条件判断赋值逻辑的视图方法

基于CREATE VIEW的C列填充实现方案

前置规则对齐

你的表已知约束如下,实现逻辑完全基于该规则设计:

  • 表共包含A、B、C三个字段,初始状态C列全为NULL
  • 每行数据满足互斥规则:A、B两列从不同时存储有效数值,单行仅A列有值,或仅B列有值
  • 核心判断要求:逐行校验,若A列存在有效值、且B列为NULL或0,则C列写入A列的数值

可直接运行的实现代码

假设你的原表名为original_table(替换为你实际的表名即可),需要创建的视图名为filled_c_view,执行如下SQL即可完成视图创建:

CREATE VIEW filled_c_view AS
SELECT
  A,
  B,
  CASE
    WHEN A IS NOT NULL AND (B IS NULL OR B = 0) THEN A
    ELSE B
  END AS C
FROM original_table;

代码说明(面向SQL初学者)

  • 视图是SQL中保存的可复用查询逻辑,不会修改原表的任何原始数据,每次查询视图时会实时按规则计算结果,不会破坏原有数据
  • CASE WHEN是SQL标准的条件判断语法,逻辑和其他编程语言的if-else完全一致:
    • 第一个分支匹配你要求的规则:A列非空、且B列是NULL或0时,C列直接取A列的值
    • 剩余分支自动匹配B列存有效值的场景(因为你的表本身有A、B互斥存值的约束,不会出现两列同时有值的冲突情况),C列直接取B列的值
  • 代码中AS C的作用是把条件计算出的结果列命名为C,和原表字段名保持一致

结果验证方法

视图创建完成后,执行如下查询即可查看计算后的全量数据,逐行核对C列结果是否符合预期:

SELECT * FROM filled_c_view;

补充说明:如果你后续需要直接把原表的C列永久更新为计算后的值,需要使用UPDATE语句实现,不属于本次CREATE VIEW创建视图的需求范畴。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:24:30