2017-02-13 60 views

回答

0

在像MySQL這樣的關係數據庫中,表格固有的並不是特定的順序。如果訂單對您很重要(例如按姓氏字母或按訂單號碼),則在檢索信息時應按特定列排序。除此之外,MySQL通常會按照插入順序顯示信息,但依賴此可能會導致問題(例如,在插入期間丟失一行或重新刪除項目時重新排序)。

所以正確的解決方案是真正地被一些可靠的方法(可能是一個「SORT_ORDER」 INT欄或時間戳最後修改時間)進行排序,但唯一的解決方法,這將是手動(或程序)移動每個值由一個。您可以直接使用SQL來完成此操作,但必須注意不要更改太多的值。確保先備份備份。

一旦你有了你的表的備份,你需要表的另一個副本。在這個例子中,我有'sorter'和'sorter2',它們是相同的,並且有兩列; 'id'和'val'。

UPDATE sorter, sorter2 
SET sorter.val = sorter2.val 
WHERE sorter.id = sorter2.id +1 AND sorter.id > 15 

這可以擴展爲包括更多的列,當然AND語句應該適合適合插入新數據的行。最簡單的方法是在最後添加一行(可以是空白或有垃圾數據,因爲倒數第二行很快就會替換它),然後運行SQL將所有內容都移動一個,在任何與您的AND語句匹配的行中留下一個重複的空格,供您手動插入缺失的信息。

但是,如果訂單對您很重要,我推薦使用更好的排序方式。