📖
쿼리문 그누보드5 wr_id와 wr_parent를 정순으로, wr_num을 역순으로 업데이트(댓글 포함)
페이지 정보
본문
1. 댓글 포함 전체 업데이트 쿼리 (MySQL 8+)
[code]WITH mapped AS (
SELECT
wr_id AS old_id,
ROW_NUMBER() OVER (ORDER BY wr_id ASC) AS new_id,
-ROW_NUMBER() OVER (ORDER BY wr_id ASC) AS new_num
FROM g5_write_테이블명
)
UPDATE g5_write_테이블명 AS g
JOIN mapped AS m ON g.wr_id = m.old_id
LEFT JOIN mapped AS p ON g.wr_parent = p.old_id
SET
g.wr_id = m.new_id,
g.wr_parent = p.new_id,
g.wr_num = m.new_num;[/code]💡 설명
mapped: 기존 wr_id를 기준으로 new_id, new_num을 부여.
첫 번째 JOIN: 본인의 ID를 매핑.
두 번째 LEFT JOIN: wr_parent도 old_id → new_id로 변환.
최종적으로:
글/댓글 자체 ID(wr_id)
댓글이 가리키는 부모 ID(wr_parent)
정렬용 번호(wr_num)
를 전부 업데이트.
2. wr_id의 마지막 값을 기준으로 AUTO_INCREMENT를 재설정[code]-- 예를 들어, 마지막 wr_id가 1000이라면
ALTER TABLE g5_write_테이블명 AUTO_INCREMENT = 1001;[/code]
[code]WITH mapped AS (
SELECT
wr_id AS old_id,
ROW_NUMBER() OVER (ORDER BY wr_id ASC) AS new_id,
-ROW_NUMBER() OVER (ORDER BY wr_id ASC) AS new_num
FROM g5_write_테이블명
)
UPDATE g5_write_테이블명 AS g
JOIN mapped AS m ON g.wr_id = m.old_id
LEFT JOIN mapped AS p ON g.wr_parent = p.old_id
SET
g.wr_id = m.new_id,
g.wr_parent = p.new_id,
g.wr_num = m.new_num;[/code]💡 설명
mapped: 기존 wr_id를 기준으로 new_id, new_num을 부여.
첫 번째 JOIN: 본인의 ID를 매핑.
두 번째 LEFT JOIN: wr_parent도 old_id → new_id로 변환.
최종적으로:
글/댓글 자체 ID(wr_id)
댓글이 가리키는 부모 ID(wr_parent)
정렬용 번호(wr_num)
를 전부 업데이트.
2. wr_id의 마지막 값을 기준으로 AUTO_INCREMENT를 재설정[code]-- 예를 들어, 마지막 wr_id가 1000이라면
ALTER TABLE g5_write_테이블명 AUTO_INCREMENT = 1001;[/code]
댓글목록
등록된 댓글이 없습니다.
![]() ![]() |