我有一個存儲在數據庫中的項目列表。每個項目都有一個id列,一個標題和一個位置列(int)。如何讓用戶插入列表中的任何位置?
默認情況下,無論用戶何時向列表中添加新項目,其ID都會置於該位置。所以如果你有3個項目,ids 1,2,3,他們的位置也會是1,2,3。
然後當提取位置時,我會在我的SQL查詢中執行ORDER BY position ASC
。
問題是,用戶想要一個功能,他可以在現有項目的任何位置添加新項目。
因此,如果您的項目1,2,3位置1,2,3,他可以選擇在位置2添加一個新的項目,這將導致項目1,2,3,4,具有位置:1 3 4 2
所以第4項將在第2位,第2項和3將被下推至3和4位放,等
什麼是最簡單/最有效的algorith到完成這個插入?
您可能需要閱讀[這](http://stackoverflow.com/questions/1581758/mysql-update-a-sorting-index-column-to -move-items),[this](http://stackoverflow.com/questions/2113005/updating-an-order-column-mysql)和[this](http://stackoverflow.com/questions/1995770/best三通對實現-重新排序的信息收集和堅持,這對數據庫/ 1995800#1995800)。 – Kermit