所以进退两难,我有一个名为 T_GROUP 的 Oracle 表。表中的记录具有唯一的 ID (ID),它们是 Study 的一部分,由 STUDY_ID 标识,因此多个组可以在同一个 Study 中。
CREATE TABLE T_GROUP
(
"ID" NUMBER(10,0),
"GROUP_NAME" VARCHAR2(255 CHAR),
"STUDY_ID" NUMBER(10,0)
)
现有表有数百条记录,我现在添加一个名为 GROUP_INDEX 的新列:
ALTER TABLE T_GROUP ADD (
GROUP_INDEX NUMBER(10,0) DEFAULT(0)
);
添加列后,我需要运行一个脚本来更新 GROUP_INDEX 字段:它应该从 1 开始,并为study中的每个组递增 1 ,从最低 ID 开始。
所以现在我有如下数据:
ID GROUP_NAME STUDY_ID GROUP_INDEX
-------------------------------------------
1 Group 1 3 0
2 Group 2 3 0
3 My Group 5 0
4 Big Group 5 0
5 Group X 5 0
6 Group Z 6 0
7 Best Group 6 0
更新后的 group_index 字段应如下所示:
ID GROUP_NAME STUDY_ID GROUP_INDEX
-------------------------------------------
1 Group 1 3 1
2 Group 2 3 2
3 My Group 5 1
4 Big Group 5 2
5 Group X 5 3
6 Group Z 6 1
7 Best Group 6 2
更新将通过批处理文件从 sqlplus 运行。我玩过 group by 和 sub 查询,但运气不佳,而且从未使用过 sqlplus,我不确定是否可以使用变量、游标等。非常感谢所有提示!