2017-02-13 62 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语句匹配的行中留下一个重复的空格,供您手动插入缺失的信息。

但是,如果订单对您很重要,我推荐使用更好的排序方式。