2013-03-18 54 views
0

我有一個文件列表中的項目列表,哪種方式是最實用的根據用戶如何定位它們的排序記錄?每個用戶可能有數百條記錄。也許有更好的方法來做到這一點,我已經把思維裝箱了?可排序的項目MySQL的結構

選項1:我有一張包括訂單的表。我可以很容易地按順序排序,但是當我添加一個新字段或在前端重新排序時,我可能需要更新許多記錄,例如:如果有50個文件,則將file_id 1更改爲位置50 ,可以重新編號每行又需要50個更新的順序。*

table: file 
file_id | name | order 
------------------------ 
1  | test | 2 
2  | other | 1 

選項2:基於組織的關閉次序表文件表。這需要更多的工作和錯誤檢查,並且有點困難。然而,我會用CSV值更新一行並將它們轉換爲數組來對文件列進行排序。

table: file 
file_id | name 
---------------------- 
1  | test 
2  | other 

table: order 
file_order 
---------------------- 
2,1 

回答

2

選項1,你可以使用這些SQL請求:

我添加一個字段user_idfile

使50文件第三位:

UPDATE table SET order=3 WHERE id=50 AND user_id = xxx 

UPDATE table SET order=order+1 WHERE id>3 AND id<50 AND user_id = xxx 

使第3個爲第50個位置:

UPDATE table SET order=50 WHERE id=3 AND user_id = xxx 

UPDATE table SET order=order-1 WHERE id>3 AND id<50 AND user_id = xxx