如何在SQL当前行中获取上列值并更新immediateparent字段
问题描述
现有数据表:
| OrgID | Treelevel | LEVEL1 | LEVEL2 | LEVEL3 | immediateparent |
|---|---|---|---|---|---|
| 0010 | 3 | 008 | 009 | 0010 | NULL |
| 0012 | 2 | 0011 | 0012 |
期望输出:
| OrgID | Treelevel | LEVEL1 | LEVEL2 | LEVEL3 | immediateparent |
|---|---|---|---|---|---|
| 0010 | 3 | 008 | 009 | 0010 | 009 |
| 0012 | 2 | 0011 | 0012 | 0011 |
需求:根据Treelevel字段值,获取当前行OrgID对应的上一级层级值,更新到immediateparent字段。
解决方案
可以用SQL的CASE WHEN语句实现条件赋值,根据Treelevel的取值对应提取上一级LEVEL字段的值:
UPDATE your_table_name SET immediateparent = CASE WHEN Treelevel = 3 THEN LEVEL2 WHEN Treelevel = 2 THEN LEVEL1 -- 若存在更多层级,继续补充对应条件即可 ELSE immediateparent -- 无匹配规则时保留原有值,避免被清空 END;
如果需要先验证结果,可使用查询语句:
SELECT OrgID, Treelevel, LEVEL1, LEVEL2, LEVEL3, CASE WHEN Treelevel = 3 THEN LEVEL2 WHEN Treelevel = 2 THEN LEVEL1 ELSE immediateparent END AS immediateparent FROM your_table_name;
说明
- 当
Treelevel为3时,取LEVEL2的值作为父级; - 当
Treelevel为2时,取LEVEL1的值作为父级; - 后续若新增层级(比如Treelevel=4对应LEVEL3),只需在CASE语句中添加对应分支即可。
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

