idx | parentIdx | name | upperIdx | oldIdx |
1 | 1 | 1 | 0 | null |
2 | 1 | 1-1 | 1 | null |
3 | 1 | 2 | 0 | null |
4 | 1 | 2-1 | 3 | null |
5 | 1 | 2-2 | 3 | null |
6 | 1 | 2-3 | 3 | null |
7 | 1 | 2-3-1 | 6 | null |
8 | 1 | 2-3-2 | 6 | null |
위와 같은 형태의 테이블 구조이며 해당 테이블 내용을 복사하여 동일한 테이블에 데이터를 추가하고 싶습니다.
데이터 복사는 했으나 upperIdx값이 이전idx값을 참조하다보니 트리형태의 구조가 잡히지 않아 일괄로 update 하려고 합니다.
아래와 같이 쿼리문을 작성하여 시도하였으나 UPDATE하려는 테이블을 참조하고있어서 동작을 하지 않네요.
UPDATE A SET UPPERIDX = (SELECT * FROM (SELECT (SELECT IDX FROM A BB WHERE BB.UPPERIDX = AA.OLDIDX) FROM A AA WHERE IDX = 2) CC)
아래는 최종적으로 원하는 형태의 데이터 내용입니다.
idx | parentIdx | name | upperIdx | oldIdx |
1 | 1 | 1 | 0 | null |
2 | 1 | 1-1 | 1 | null |
3 | 1 | 2 | 0 | null |
4 | 1 | 2-1 | 3 | null |
5 | 1 | 2-2 | 3 | null |
6 | 1 | 2-3 | 3 | null |
7 | 1 | 2-3-1 | 6 | null |
8 | 1 | 2-3-2 | 6 | null |
9 | 2 | 1 | 0 | 1 |
10 | 2 | 1-1 | 9 | 2 |
11 | 2 | 2 | 0 | 3 |
12 | 2 | 2-1 | 11 | 4 |
13 | 2 | 2-2 | 11 | 5 |
14 | 2 | 2-3 | 11 | 6 |
15 | 2 | 2-3-1 | 14 | 7 |
16 | 2 | 2-3-2 | 14 | 8 |