2013-04-16 1 views
-1

필드 값이 1,2,3,5,6, .... 인 테이블이 있습니다. 내 문제는 "2"를 삽입하려고하면 2,3이 1과 5,6로 증가 된 값은 변하지 않고 (4가 존재하지 않기 때문에), 2의 자리에 새로운 값을 삽입해야합니다. 새로운 value.But 5,6 삽입하기 전에 는 또한 졌죠의 사람이 처리하는 방법을 알고하는 방법을 잘 모릅니다 1.I으로 증가, 나랑 가지고 도와주세요누락 된 일련 번호가 올라갈 때까지 증가 값

Update table set v1=v1+1 where v1>=newvalue 

와 업데이트 쿼리를 시도 많은 양의 데이터 때문에 불가능 각 값

답변

1
SELECT t1.v1 + 1 AS gap 
FROM `table` AS t1 
LEFT OUTER JOIN `table` AS t2 ON t2.v1 = t1.v1 + 1 
WHERE t2.v1 IS NULL AND t1.v1 >= :newvalue 
ORDER BY t1.v1 ASC 
LIMIT 1 

이 쿼리 :newvalue 삽입시 v1 업데이트 상한 제공 용 루프를 업데이트하게한다.

+0

당신은 이미 존재하는 값을 업데이트하기위한 질문을 제안 할 수 있습니까? 나는 "5"값을 "3"으로 변경하고 3에서 4까지 자동 변경하고 6에서 5, 7에서 6 등으로 변경할 수 있습니까? – Shin

관련 문제