2010-07-30 3 views
2

1에서 1000까지 시작하는 위치 필드를 보유하는 테이블에 1000 개의 레코드가 있습니다. 이제 1000 레코드에 대한 재정렬 기능을 구현하고 싶습니다. 1000 번째 레코드를 1 번째 위치로 이동하면 1 번째 레코드는 2 번째 위치로 이동하고 2 번째 레코드는 3 번째 위치로 이동하며 999 번째 레코드는 1000 번째 위치로 이동합니다.한 번에 1000 행의 순서를 바꾸는 가장 좋은 방법은 무엇입니까

참고 : 페이지 당 20 개의 레코드가 표시됩니다.

jqGrid 끌어서 놓기 플러그인을 사용하여 재정렬 기능을 구현했습니다. 이 기술을 사용하면 한 번에 20 개의 레코드 위치를 업데이트하는 것이 매우 간단합니다. MySQL 측에서는 20 개의 레코드 쿼리를 업데이트하기 위해 20 개의 쿼리를 실행합니다.

이제 현재 레코드 위치를 보유하는 위치 열에 텍스트 필드가 있어야합니다. 따라서 사용자는 드래그 앤 드롭에 상관없이 텍스트 필드에 위치 번호를 입력하여 원하는 위치로 이동할 수 있습니다. 내가 50 번째 페이지에 있고 1000 번째 레코드를 1 번째 위치로 이동하려고한다면 1000 번째 위치 텍스트 필드에 1로 위치 번호를 입력 할 것입니다. 일단 위치 번호를 입력하면 재정렬 논리가 나타납니다. 첫 단락에.

이제 어떻게하면 1000 레코드를 한 번에 업데이트 할 수 있습니까? 그리고 MySQL로드는 무엇입니까? 이 기능을 구현하는 가장 좋은 방법은 무엇입니까?

참고 : 드래그 앤 드롭 기능에서와 마찬가지로 1000 개의 업데이트 쿼리 (예 : MySQL 교착 상태 방지)를 실행하고 싶지 않습니다.

사전에 도움을 주셔서 감사합니다.

답변

3

수백 건의 업데이트가 우스꽝 스럽습니다. 같은 것을 시도해보십시오도 문제가 해결되지 않습니다이

UPDATE Records SET 
SequenceNumber = SequenceNumber + 1 
WHERE SequenceNumber >= @Lowbound AND SequenceNumber <= @UpperBound; 

UPDATE Records SET 
SequenceNumber = @Lowbound 
WHERE ID = @SelectedId; 
+0

이 잡았다 확인 ...하지만 그것은 MySQL의 측면 – karuh24

+0

에 어떤 문제를 줄 것이다, 내가 1000 개 이상의 레코드가 있다고 가정하고 위의 로직을한다. 1001 레코드 위치는 업데이트 후 빈 레코드를 보유합니다. – karuh24

+0

@ karuh24 : 임의의 범위에서 작동하도록 코드를 업데이트했습니다. MySQL에서는 아무런 문제가 없어야합니다. – recursive

관련 문제