如何在SELECT语句中为Type='B'的行复制first_value到second_value?
当然可以实现这个需求!
咱们先看看你现有语句里的小问题,再给出正确的写法:
你现有语句的问题:
- 拼写错误:
firt_value应该是first_value - CASE语句没有处理
type='C'的场景,也没考虑其他类型(比如示例里的'A')的情况 - 列名不一致:原表列是
descripcion,你写的是description
正确的SELECT语句写法
这里我们用完整的CASE表达式来覆盖所有需求场景,同时修正拼写和列名问题:
SELECT id, descripcion, type, first_value, CASE WHEN type = 'B' THEN first_value -- type为B时复制first_value的值 WHEN type = 'C' THEN NULL -- type为C时留空(这里用NULL表示空值,若要空字符串可换成'') ELSE second_value -- 其他type(比如示例里的'A')保留原second_value的值 END AS second_value FROM your_table; -- 记得替换成你实际的表名
补充说明:
- 如果你的业务里只有A、B、C三种type,ELSE分支可以省略,但加上会更严谨,避免出现未知type时返回意外结果
- 如果你希望type='C'时返回的是空字符串(而不是数据库的NULL空值),把
NULL换成''即可
内容的提问来源于stack exchange,提问作者bryannsi
相关产品推荐
相关产品推荐

