gpt4 book ai didi

mysql - 删除后更新排序键

转载 作者:行者123 更新时间:2023-11-29 02:09:02 31 4
gpt4 key购买 nike

我有一个表,其中有一个字段 sort_id。在这个字段中有从 1 到 n 的数字,它们定义了数据集的顺序。现在我想删除一些元素,然后我想重新排序表格。因此,我需要一个查询来“发现”差距并根据修改更改 sort_id 字段。

当然,我可以这样做:

SELECT sort_id FROM table WHERE id = 5

然后保存 sort_id 之后:

DELETE FROM table WHERE id = 5
UPDATE table SET sort_id = sort_id - 1 WHERE sort_id > {id from above}

但我想一步完成重新排序过程。

最佳答案

Mladen 和 Arvo 有很好的想法,但不幸的是,在 MySQL 中,您不能在同一语句中(即使在子查询中)SELECTUPDATE 同一表。这是 MySQL 的已知限制。

这是一个使用 MySQL 用户变量的解决方案:

SET @i := 0;
UPDATE mytable
SET sort_id = (@i := @i + 1)
ORDER BY sort_id;

不管怎样,我都不会费心去做这件事。如果您的 sort_id 仅用于排序而不是作为一种“行号”,那么在您删除 id=6 的行后,这些行仍按排序顺序排列.这些值不必连续进行排序。

关于mysql - 删除后更新排序键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/290610/

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