sql - 使用自动生成的值更新每一行
问题描述
我有一张桌子:
CREATE TABLE "person" (
"ID" NUMBER(38,0),
"NAME" VARCHAR2(50 CHAR)
)
数据:
ID 名称 1 莫妮卡 2 空 3 空 4 斯蒂芬 5 空
我需要使用值“person”和自动递增值(从 1 - person1、person2、person3 等)更新空值:
1 monica
2 person1
3 person2
4 stephan
5 person3
我应该使用什么 sql (oracle) 查询?
解决方案
不需要解析函数。更新可以像这样简单地完成:
UPDATE person
SET NAME = 'person' || ROWNUM
WHERE name IS NULL;
更新
由于人员编号需要与人员 ID 连续,因此可以使用以下查询:
UPDATE person p
SET p.name =
'person'
|| (SELECT person_number
FROM (SELECT p2.id, ROW_NUMBER () OVER (ORDER BY p2.id) AS person_number
FROM person p2
WHERE name IS NULL)
WHERE id = p.id)
WHERE p.name IS NULL;
推荐阅读
- go - 在另一个文件夹中导入本地包
- geolocation - 具有地理位置的场景形式
- apache-camel - 保险丝/FIS 是否支持火花放电?
- excel - VBA中具有相似名称的字符串循环
- go - struct变量的类型为time.Weekday时如何通过postman取值?
- python - 尝试在 Python 中使用 API JSON 输出
- java - Java servlet - 获取本地打印机列表
- google-cloud-firestore - 尝试从 react-native-firebase 使用 firestore.runTransaction 时出错
- lisp - lisp 中的循环指针
- batch-file - 批处理脚本 - 以下脚本是否提供正确的输出