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匹配。 –