SQL实现同表字段值迁移:将字段值转移至另一字段并置零
转移字段非零值至另一字段并置零原字段
初始数据
| Column A | Column B |
|---|---|
| 1 | 0 |
| 3 | 0 |
| 0 | 7 |
期望结果
| Column A | Column B |
|---|---|
| 0 | 1 |
| 0 | 3 |
| 0 | 7 |
实现SQL语句
使用UPDATE配合CASE逻辑即可完成需求:
UPDATE your_table_name SET Column A = 0, Column B = CASE WHEN Column A != 0 THEN Column A ELSE Column B END;
逻辑说明
- 强制将
Column A的所有值设为0 - 仅当
Column A原本非零时,用它的值覆盖Column B;若Column A原本就是0,则保留Column B原有值
注意:如果你的数据库要求带空格的字段名用引号包裹(如PostgreSQL、SQLite),请使用带引号的字段名:
UPDATE your_table_name SET "Column A" = 0, "Column B" = CASE WHEN "Column A" != 0 THEN "Column A" ELSE "Column B" END;
执行更新前建议先用
SELECT验证逻辑:SELECT 0 AS "Column A", CASE WHEN "Column A" != 0 THEN "Column A" ELSE "Column B" END AS "Column B" FROM your_table_name;
内容的提问来源于stack exchange,提问作者mohammadreza abbaspour
相关产品推荐
相关产品推荐

