Oracle中如何用列的最大值替换NULL值
将tab1表中id列的NULL值替换为该列最大值
原表结构及数据
| id | name | |
|---|---|---|
| 1 | Sta | sta@example.com |
| NULL | Danny | dany@example.com |
| 3 | Elle | elle@example.com |
期望结果
| id | name | |
|---|---|---|
| 1 | Sta | sta@example.com |
| 3 | Danny | dany@example.com |
| 3 | Elle | elle@example.com |
解决方案
1. 查询时临时替换(不修改原表)
使用COALESCE函数结合子查询获取id列最大值,仅在查询结果中替换NULL,不改动原表数据:
SELECT COALESCE(id, (SELECT MAX(id) FROM tab1)) AS id, name, email FROM tab1;
2. 永久更新原表数据
如果需要直接修改原表中的NULL值,执行UPDATE语句:
UPDATE tab1 SET id = (SELECT MAX(id) FROM tab1) WHERE id IS NULL;
注意:若id列是自增主键,该操作可能触发唯一性约束冲突,需根据实际表结构调整。
内容的提问来源于stack exchange,提问作者Prabhat Bhatt
相关产品推荐
相关产品推荐

