在表中任意排序记录
使用数据库时,通常需要按顺序访问记录。例如,如果我有一个博客,我希望能够以任意顺序重新排列我的博客文章。这些条目通常具有很多关系,因此关系数据库似乎很有意义。 我见过的常见解决方案是添加一个整数列order: CREATE TABLE AS your_table (id, title, sort_order) AS VALUES (0, 'Lorem ipsum', 3), (1, 'Dolor sit', 2), (2, 'Amet, consect', 0), (3, 'Elit fusce', 1); 然后,我们可以对行进行排序,order以使其按正确的顺序排列。 但是,这似乎很笨拙: 如果我想将记录0移到开头,则必须对每个记录重新排序 如果我想在中间插入新记录,则必须对每个记录重新排序 如果要删除记录,则必须对它之后的每个记录重新排序 很容易想到这样的情况: 两个记录具有相同的 order order记录之间存在差距 这些可能很容易发生,原因有很多。 这是Joomla之类的应用程序采用的方法: 您可能会争辩说这里的界面很糟糕,他们应该使用箭头或拖放操作来代替人类直接编辑数字,而您可能是正确的。但是在幕后,发生了同样的事情。 有人建议使用小数来存储顺序,以便您可以使用“ 2.5”将记录插入顺序为2和3的记录之间。虽然这样做有所帮助,但可以说它甚至更麻烦,因为您最终会得到奇怪的小数点(您在哪里停止?2.75?2.875?2.8125?) 有没有更好的方法将订单存储在表中?