我有一个字段的表有值1,2,3,5,6,.... 我的问题是,当我尝试插入“2”当前2,3增加1和5,6保持不变(因为4不存在),然后在2的位置需要插入新的值。 我尝试使用
更新查询 Update table set v1=v1+1 where v1>=newvalue
之前插入一个新值。但是5,6也增加了1.我不知道该怎么做。有谁知道如何处理这个,请帮帮我。我有大量的数据,所以不可能做循环更新每个值
答案 0 :(得分:1)
SELECT t1.v1 + 1 AS gap
FROM `table` AS t1
LEFT OUTER JOIN `table` AS t2 ON t2.v1 = t1.v1 + 1
WHERE t2.v1 IS NULL AND t1.v1 >= :newvalue
ORDER BY t1.v1 ASC
LIMIT 1
此查询提供了在插入v1
时更新:newvalue
的上限。