0
我有兩個表,將相同的密鑰存儲在ID欄:甲骨文 - 複雜更新
CREATE TABLE "TESTA"
( "RECORD_STATUS" VARCHAR2(4 BYTE),
"ID" NUMBER, --this is PK
"BATCH" NUMBER
);
CREATE TABLE "TESTB"
( "ID" NUMBER, --this is unique FK to TESTA.ID
"BATCH" NUMBER);
我在這些測試表中插入一些20測試記錄。
要求:使用ID
加入兩個表,使用TESTA.RECORD_STATUS DESC
排序,然後更新BATCH
列,每5行增加1(從0開始)。
這是我到目前爲止有:
MERGE INTO TESTB st
USING(SELECT A.rowid as rid,
ROW_NUMBER() OVER (ORDER BY A.RECORD_STATUS DESC) as rn
FROM TESTA A) t
ON(st.ROWID=t.RID)
WHEN MATCHED THEN
UPDATE SET st.BATCH=CEIL(t.rn/5);
問題:輸出0表示合併行,但我期待所有行到更新。
我非常感謝一些有關如何實現預期的見解。我希望我沒有錯過任何東西。
的ROWID是一個唯一的地址爲每個記錄。您不會期望一個表中的行中的ROWID與任何其他表中的任何ROWID匹配。 –