문제

다음 표가 있습니다

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

이 테이블을 갖도록 업데이트하고 싶습니다.

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

나는 완벽한 스레드를 찾았지만 MSSQL을위한 것이 었습니다. MySQL 4.1.10을 사용합니다.

다른 스레드는 여기에서 찾을 수 있습니다. 테이블의 서브 세트에 대한 시퀀스를 생성합니다.

MySQL에서 어떻게 할 수 있는지 아는 사람이 있습니까?

감사합니다, Jean-Francois

도움이 되었습니까?

해결책

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

다른 팁

빠른 스크립트를 작성하십시오. PHP에서 10 줄 미만의 코드가 필요합니다.

당신이 찾을 수 있다고 생각합니다 이 기사 유용한. 요컨대 : 정확히 하나의 쿼리에서는 할 수 없지만 두 개로 수행 할 수 있습니다 (데이터를 새 테이블에로드하고 삽입 문을 실행하십시오).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top