You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条MySQL语句自动更新条目排序并维持原有顺序

单条MySQL语句重排item_order字段

现有items表数据:

id,item_order
50,2
51,3
52,6
53,5

要实现按原item_order的排序逻辑,将item_order更新为从1开始的连续递增数值,最终得到:

id,item_order
50,1
51,2
53,3
52,4

可以通过MySQL用户变量结合排序更新来实现,单条语句如下:

UPDATE items 
JOIN (SELECT @row_num := 0) AS init
SET item_order = (@row_num := @row_num + 1)
ORDER BY item_order ASC;

语句说明

  • 通过子查询初始化变量@row_num为0,用于跟踪递增序号
  • ORDER BY item_order ASC确保按照原有item_order的排序顺序处理记录
  • 更新时将item_order赋值为自增后的@row_num,实现连续递增的效果

如果你的MySQL版本支持在同语句中先设置变量,也可以用这种写法:

SET @row_num = 0;
UPDATE items 
SET item_order = (@row_num := @row_num + 1)
ORDER BY item_order ASC;

内容的提问来源于stack exchange,提问作者khalid seleem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:35:20