gpt4 book ai didi

Mysql - 根据顺序从另一列更新表列

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

我有一个包含列 id, name, position, old_position 的表格.

专栏old_position包含用于在进行选择时定义顺序的唯一编号。但是数字不是连续的(即使订购时也是如此)。例如。2, 12, 11, 14, 20, 35, 45, 28,

我想要实现的是填充列 position从 1 开始的连续数字,但根据 old_position 具有相同的顺序,所以当我按 position ASC 排序时我仍然可以获得相同的行顺序。有办法吗?

谢谢

最佳答案

假设 id 对于每一行都是唯一的,您可以使用变量来做到这一点:

update <table> t join
(select t.id, @rn := @rn + 1 as seqnum
from <table> t cross join (select @rn := 0) vars
order by old_position
) tt
on tt.id = t.id
set t.position = tt.seqnum;

如果你愿意,你可以在没有子查询的情况下编写它。挑战在于定义变量。这是一种方法:

update <table> t
set t.position = (@rn := coalesce(@rn, 0) + 1)
order by old_position;

您不能在子查询中初始化变量,因为 MySQL 不允许在 update 语句中同时使用 joinorder by

关于Mysql - 根据顺序从另一列更新表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384484/

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