因此,我有一個名爲T_GROUP的Oracle表。表中的記錄具有唯一的ID(ID),它們是由STUDY_ID標識的研究的一部分,因此多個組可以在同一個研究中。在Oracle中使用增量值更新分組記錄
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開始,並且在研究內的每個組以1開始,並且從最低的ID開始以1遞增。
所以現在我有數據如下:
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一個批處理文件運行。我已經玩過羣查詢和子查詢,但我沒有太多的運氣,並從未使用過sqlplus我不確定我是否可以使用變量,遊標等。所有提示非常感謝!
那,先生,是最優秀的。它適用於8個記錄的小表格,所以我將在明天對dev/test dbs進行測試,如果它能正常工作,您會得到一個很大的綠色記號! – 2012-04-19 23:53:17
這適用於小表,但它具有O(N^2)性能......在處理較大的表時使用合併語句。 – 2012-04-20 06:27:34
感謝羅布 - 你可以展示如何在這種情況下使用合併的例子嗎? – 2012-04-20 07:24:30