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查询

最佳答案

使用UPDATEINSERT。我假设ID是自动生成的。 UPDATEsort_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/

10-13 07:56
查看更多