복잡한 갱신 : 오라클 - 나는 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
을 사용하여 정렬 한 다음열을 매 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와 일치하는 것을 기대하지 않을 것입니다. –