2010-05-10 3 views
1

(아마도) 멍청한 질문에 대한 미안하지만,이 물건에 새로운.mysql의 기존 중복 항목이 변경됩니다

나는 열 '위치'가있는 테이블을 가지고 있는데, 나는 새 행을 삽입 할 때 삽입 된 행보다 낮은 위치에있는 모든 행의 위치를 ​​변경하려고합니다. 예를 들어 위치 4의 행을 추가하면 중복이 있으면 5가되어야하고 5는 6과 같이되어야합니다.

또한 여기에서 가장 높은 값을 얻을 수있는 방법이 있습니다. PHP를 통해 모든 행에서 테스트?

답변

2

두 개의 쿼리가 필요합니다. 더 중복 것의 newPosition를 삽입 할 수 있습니다 후

UPDATE table SET position = position + 1 WHERE position >= newPosition 

과 : 당신은, 당신은 삽입하고 위치를 알고 당신이 삽입있는 위치에보다 크거나 같은 위치에있는 각 행의 위치를 ​​증가 없다고 가정 존재 :

INSERT INTO table SET position = newPosition 

가 가장 높은 값을 얻으려면, 당신은 MAX()

SELECT MAX(position) FROM table 
+0

감사의 친구를 사용할 수 있습니다, 그게 해결! – Mladen

+0

젠장, 그것은 한 행에서만 작동했습니다. 둘 이상의 행을 업데이트해야하는 경우 mysql은 다음과 같이 말합니다. 키 '위치'에 중복 항목 '2'가 표시됩니다. 도움이 필요하십니까? – Mladen

+0

내 마지막 게시물에 신경 쓸 필요가 없습니다. 위치에 '고유'키를 남겼습니다 ... 잘 작동합니다. – Mladen

관련 문제