任何帮助赞赏
Edit:
在这里,我想做的,感谢Itsmatt:whant重新排序第1行1100之后,您计划将2-1100保持相同,然后修改为1101,并增加1101-1200
您需要以两个步骤进行操作:
UPDATE MyTable
SET `Order` = `Order` + 1
WHERE `Order` > (SELECT `Order`
FROM MyTable
WHERE ID = <insert-after-id>);
...它将比您之后插入的人员更移动列表的每个行的订单号。
INSERT INTO MyTable (Name, `Order`)
VALUES (Name, (SELECT `Order` + 1 FROM MyTable WHERE ID = <insert-after-id>));
要插入新行(假设ID是自动增量),订单号比您插入的人员多。
即可以任何正常的方式添加新行,然后让以后选择使用顺序进行排序。根据MySQL标准,1200行无限地很小。您确实不必(也不想)保留物理表分类。相反,使用键和索引以一种将为您提供所需内容的方式访问表。
你有一个大问题。订单需要独特的约束。为了移动您需要的项目:
1。删除独特的约束。 2。移动项目。
3。重新激活独特的约束。 其他方法是使用字符串(“ A”,“ B”,“ C”等)或整数 * 100列表(100、200、300等)。但是,这种方式是最简单的动作,但是在您有100、101和102订单时,请重新订购并自动化复杂性。 您可以insert into tablename (name, `order`)
values( 'name', select `order`+1 from tablename where name='name')