gpt4 book ai didi

mysql - 重新排序 MYSQL 表

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:46 25 4
gpt4 key购买 nike

我有一个带有“订单”字段的 MySql 表,但是当一条记录被删除时,会出现一个空白我怎样才能按顺序更新我的“订单”字段?如果可能在一次查询中 1 1

id.........order
1...........1
5...........2
4...........4
3...........6
5...........8

id.........order
1...........1
5...........2
4...........3
3...........4
5...........5

我可以逐条记录

获取按 Order 排序的 SELECT 并逐行更改 Order 字段但老实说我不喜欢它。

谢谢

额外信息:

我也想这样改:

id.........order
1...........1
5...........2
4...........3
3...........3.5
5...........4

id.........order
1...........1
5...........2
4...........3
3...........4
5...........5

最佳答案

在 MySQL 中你可以这样做:

update t join
(select t.*, (@rn := @rn + 1) as rn
from t cross join
(select @rn := 0) const
order by t.`order`
) torder
on t.id = torder.id
set `order` = torder.rn;

在大多数数据库中,您还可以使用相关子查询来完成此操作。但这在 MySQL 中可能是一个问题,因为它不允许将表更新为子查询:

update t
set `order` = (select count(*)
from t t2
where t2.`order` < t.`order` or
(t2.`order` = t.`order` and t2.id <= t.id)
);

关于mysql - 重新排序 MYSQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com