table1:id,field1(整数),field2,...
如上所示field1是从1到100序列化的整数
我从php表单输入一个新记录,其中field1值为45。鉴于该值已存在于表中(从1到100)
**我希望查询存储新记录在表中的现有记录之前,并从第二个45开始增加field1值**
非常感谢您的帮助!
答案 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', ...); ";