从某一行开始将整数字段递增1

时间:2014-05-17 06:29:52

标签: mysql increment

table1:id,field1(整数),field2,...

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

我从php表单输入一个新记录,其中field1值为45。鉴于该值已存在于表中(从1到100)

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

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

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

如果由于某种原因需要特定的排序顺序,那么可以在两个更新语句中执行此操作:

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

UPDATE YourTable SET Field1 = Field1 + 1 WHERE Field1 >= 45

2:插入新行。

INSERT INTO YourTable (Field1) VALUES (45)

正如您所知,这可能会变得低效,因为您实际上正在更新所有行。如果您的表变大,则插入行将花费更多时间,尤其是在开头时。

如果需要,可以稍微优化一下,例如,通过保持行之间的间隙。如果你的步数为100,你可以在4450和4400之间插入行。只需要在你想要插入新行的记录之间没有间隙时重新编号。

答案 1 :(得分:0)

你需要像智慧一样运行2个sql

$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', ...); ";