tablename = zones
ID sort_order area_name
======== ========= =========
1 1 aaaa
3 2 bbbb
5 3 cccc
7 4 dddd
8 5 eeeee
我需要添加一个新的area_name
例如:ffff代替sort_order = 3。
并如下所示重新排列其余区域的sort_orders
ID sort_order area_name
======== ========= =========
1 1 aaaa
3 2 bbbb
9 3 ffff
5 4 cccc
7 5 dddd
8 6 eeeee
为此需要SQL查询
最佳答案
使用UPDATE
和INSERT
。我假设ID
是自动生成的。 UPDATE
为sort_order
序列中的新记录腾出空间,然后您可以轻松地插入。
UPDATE zones
SET sort_order = sort_order + 1
WHERE sort_order >= 3
INSERT INTO zones(sort_order , area_name)
VALUES (3, 'ffff')
但是,如果
zones
表已大量插入,则将遇到很多阻塞等待。关于mysql - sql查询基于排序顺序对数据进行重新排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51058090/