2010-07-30 94 views
2

我在表中有1000條記錄,其中包含從1到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 2010-07-30 04:39:40

+0

這也不會解決這個問題,假設我有超過1000條記錄,並做了上述邏輯。更新後,1001記錄位置將保留空記錄。 – karuh24 2010-07-30 04:46:53

+0

@ karuh24:我更新了代碼以使用任意範圍。對於MySQL應該沒有問題。 – recursive 2010-07-30 04:49:48

相關問題