问题描述 投票:0回答:2
我想以使服务器加载到最低限度的方式这样做,因为此表目前有1200行。这是保存表订单还是有更好的方法的正确方法?

任何帮助赞赏

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 sql
2个回答
10
投票

即可以任何正常的方式添加新行,然后让以后选择使用顺序进行排序。根据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')

您也可以在您的内部选择中id = id_val。

1
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.