Mysql 从某一行开始,将整型字段递增1

Mysql 从某一行开始,将整型字段递增1,mysql,increment,Mysql,Increment,表1:id,Field1集成器,field2 如上所示,field1是从1到100序列化的整数 我从php表单中输入一个新记录,其中field1的值是45。假设该值已存在于1到100之间的表中 **我希望查询将新记录存储在表中现有记录之前,并从第二个45**开始递增field1值 谢谢你的帮助 我建议不要这样做。通常,您应该按任意顺序插入行。如果要排序,可能会按名称或相关值进行排序 如果出于某种原因希望具有特定的排序顺序,则可以在两条update语句中执行此操作: 1:移动所有行以为新行腾出空间

表1:id,Field1集成器,field2

如上所示,field1是从1到100序列化的整数

我从php表单中输入一个新记录,其中field1的值是45。假设该值已存在于1到100之间的表中

**我希望查询将新记录存储在表中现有记录之前,并从第二个45**开始递增field1值


谢谢你的帮助

我建议不要这样做。通常,您应该按任意顺序插入行。如果要排序,可能会按名称或相关值进行排序

如果出于某种原因希望具有特定的排序顺序,则可以在两条update语句中执行此操作:

1:移动所有行以为新行腾出空间

UPDATE YourTable SET Field1 = Field1 + 1 WHERE Field1 >= 45
INSERT INTO YourTable (Field1) VALUES (45)
2:插入新行

UPDATE YourTable SET Field1 = Field1 + 1 WHERE Field1 >= 45
INSERT INTO YourTable (Field1) VALUES (45)
正如您所知,这可能会变得效率低下,因为您实际上正在更新所有行。如果表变大,插入行将花费更多时间,尤其是在开始时


如果需要,可以对此进行一些优化,例如,保持行之间的间距。如果您有一个100步的编号,您只需在4450处插入行,正好在4400和4500之间。仅当要插入新行的记录之间没有间隙时,才需要重新编号。

需要像wise一样运行2个sql

UPDATE YourTable SET Field1 = Field1 + 1 WHERE Field1 >= 45
INSERT INTO YourTable (Field1) VALUES (45)
$input_value = "45";
$sql1 = "UPDATE table1 SET field1=field1+1 WHERE field1>='$input_value' ";

$sql2 = "INSERT INTO table1 (field1, field2, ....) VALUES('$input_value', '$field2_value', ...); ";

再举一个有价值观的例子。我更新了我的问题。。。谢谢如果field1值已存在,则要存储的内容?field1是表中的一列。我想插入新行,field1的值为45,然后将其余行向下递增到100。所以最后一行中field1的值是101。