2013-10-11 2 views
0

업데이트하는 동안 어떻게 테이블의 필드를 재정렬 할 수 있습니까? 내가이 테이블이 즉MySQL 업데이트 재정렬 데이터 필드

: 이제

|id|order| 
|1 | 0 | 
|2 | 0 | 
|3 | 1 | 
|4 | 2 | 
|5 | 3 | 
|6 | 0 | 
|7 | 4 | 

을 내가 뭘 원하는 ID = 3이 삭제 된 경우 전체 주문 필드가 업데이트 될 것입니다 :

|id|order| 
|1 | 0 | 
|2 | 0 | 
|4 | 1 | 
|5 | 2 | 
|6 | 0 | 
|7 | 3 | 

가 된 Is 이것에 대한 간단한 해결책? 있을 경우 어떻게합니까? 나는 현장을 개별적으로 점검 할 생각이었다.

예 : 3이 삭제 된 경우 먼저 주문 번호를 가져 와서 동일한 주문을 보유한 다른 ID가 없는지 확인하고없는 경우 ID 3의 주문 번호보다 큰 모든 주문을 확인합니다 개별적으로 업데이트하십시오.

+0

당신이 것 'id = 2'가 삭제되면 어떻게됩니까? 귀하의 모범에서의 결과는 무엇입니까? –

+0

@MostyMostacho 순서 0은 2에 의해 사용되기 때문에 주문을 업데이트하지 않습니다. – magicianiam

답변

1

ID가 autonumeric 또는 새로운 식별자는 항상 한 값 후 최대 (ID) 걸릴 경우 : 방금 삭제 한 후 모든 행을 업데이트하여

을 :

update your_table set order = order - 1 where id> @the_id_you_just_deleted 
+0

이 감사를 확인합니다. – magicianiam

+0

이것은 작동하지 않습니다. 첫 번째 예제에서 '2'와 '3'사이에 중간에 높은 ID를 삽입 할 수 있으므로이 ID로 정렬되어 있다고 가정하고 있습니다. –

+0

질문의 데이터 샘플과 같은 방식으로 보입니다 . 그러나 나는 어쨌든 내 대답에서 그것을 정확하게 할 것이다. 감사. – Jonysuise