2010-06-14 20 views
1

我有一個項目一個長長的清單(比如,幾百萬的項目),我們把它叫做mytable的,它有領域mytable.itemid。創建一個MySQL表的排序,而無需使用數字(因爲當時它很難把東西之間)

的項目被賦予的順序,並且可以重新=通過拖放用戶訂購。如果我添加一個名爲mytable.order的字段,並將數字放入其中,則會產生問題:如果我想在兩個其他項之間移動項目,該怎麼辦?那麼所有的訂單字段都必須更新?這似乎是一場噩夢。

是否有一個(可擴展)的方式來增加以表是從只給每個項目一個號碼,以便通過不同的,也SQL查詢的負載每次順序改變?

+0

你可以使用浮點值,或者你可以空間出號開始說起,例如使用1000,2000,3000,等再減半每個區間時,你需要在它們之間移動行。最終你將不得不調整一些數字,但是它會在更大的間隔內發生,而不是一舉一動。另外,如果您在使用連續數字時將一個項目向上移動10行,則只需調整11行。首先調整你正在移動的那一行上面的10行,然後將移動行的排序順序設置爲新的值。 – 2010-06-14 22:26:47

回答

1

您可以創建觸發器或存儲過程來重新排序正確的順序值,或刪除所有相關的記錄,並在新秩序中插入新的。

0

可以使用部分(兩個整數,即A/B)。總是在另外兩個之間至少有一個理性。

+0

使用2個單獨的數字並沒有給我一個簡單的方法來在MySQL中排序。 – PeterV 2010-06-14 22:52:43

相關問題