테스트 사이트 - 개발 중인 베타 버전입니다

mysql 쿼리문에 대해서 질문드립니다. 채택완료

ㄷㅊㅎ 7년 전 조회 2,009

현재 테이블의 id컬럼을 AUTO_INCREMENT로 증가시키고 있습니다.

그런데 만약에 중간에 id값이 3인 행을 제거했다고 하면

id값이  1 2 - 4 5 6 7 8 9 10 이렇게 중간에 숫자가 비는데

이걸 다시 정렬해서

1 2 3 4 5 6 7 8 9

이렇게 만들고자 합니다.

 

쿼리문을 잘아는게 아니라서 대충 생각나는데로 아래와 같이 적었습니다.

 

</p>

<p> // 빈 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);</p>

<p> </p>

<p>        $count++;

    }</p>

<p>    alter table [테이블 명] auto_increment={$count+1};</p>

<p>

 

근데 위에처럼 하면 나중에 행이 몇천개 이렇게되면 쿼리를 몇천번이나 돌리게 되니까 답이없더라고요

좀더 좋은방법이 없을까요? ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
그누위즈

id 값이 오토인크리먼트 라면요

신경을 쓰지 않아도됩니다.

그냥 자동 증가값이고 지워지면 비는것이고

거기에 연연하여 그 숫자를 맞춘다고 불필요한 쿼리를 실행하면서

억지로 안맞춰도됩니다.

일반 적인 게시판이나 회원테이블등 대부분 오토인크리먼트 값은

따로 맞추거나 하지않습니다

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인