mysql 쿼리문에 대해서 질문드립니다.
본문
현재 테이블의 id컬럼을 AUTO_INCREMENT로 증가시키고 있습니다.
그런데 만약에 중간에 id값이 3인 행을 제거했다고 하면
id값이 1 2 - 4 5 6 7 8 9 10 이렇게 중간에 숫자가 비는데
이걸 다시 정렬해서
1 2 3 4 5 6 7 8 9
이렇게 만들고자 합니다.
쿼리문을 잘아는게 아니라서 대충 생각나는데로 아래와 같이 적었습니다.
// 빈 id값 정리
$result = sql_query(" SELECT id FROM [테이블명] WHERE 1 ORDER BY id asc");
$count=0; // 전체행 카운트
for($i=0; $row = sql_fetch_array($result); $i++) {
$sql = " update [테이블명] set id = {$i+1} where {$row['id']}";
sql_query($sql);
$count++;
}
alter table [테이블 명] auto_increment={$count+1};
근데 위에처럼 하면 나중에 행이 몇천개 이렇게되면 쿼리를 몇천번이나 돌리게 되니까 답이없더라고요
좀더 좋은방법이 없을까요? ㅠㅠ
!-->답변 1
id 값이 오토인크리먼트 라면요
신경을 쓰지 않아도됩니다.
그냥 자동 증가값이고 지워지면 비는것이고
거기에 연연하여 그 숫자를 맞춘다고 불필요한 쿼리를 실행하면서
억지로 안맞춰도됩니다.
일반 적인 게시판이나 회원테이블등 대부분 오토인크리먼트 값은
따로 맞추거나 하지않습니다
답변을 작성하시기 전에 로그인 해주세요.