gpt4 book ai didi

Mysql列索引值

转载 作者:行者123 更新时间:2023-11-29 20:53:34 26 4
gpt4 key购买 nike

我有一个表,其中“优先级”字段为整数。该优先级最初从 1 递增设置到记录数(类似于自动增量)。

e.g.
Id Priority
1 1
2 2
3 3

但是,如果我想插入新记录,可以更改优先级的值与现有的优先级。如果新记录的优先级值为 2,当前优先级增加 1。

e.g.
Id Priority
1 1
2 3
3 4
4 2

如果我用其他值更改现有优先级,则所有记录优先级值高于更改后的优先级值应减少,因此在表中,优先级始终与 1 及以上不同(无论记录 auto_indexed Id 字段。

目前,我的解决方案是手动的(使用 Perl 代码,以正确的方式替换所有优先级值)。

由于我很早以前就学过Mysql,目前用的是5.0版本,我想知道mysql是否有这样的功能,可以自动更新列。

最佳答案

UPDATE table
SET @original = ?
, @new = ?
, priority
= IF(priority = @original
, @new
, priority
+ IF(@original < @new, -1, 1)
)
WHERE priority >= LEAST(@original, @new)
AND priority <= GREATEST(@original, @new)
;

如果提供了当前位置和新位置的参数,这应该适用于现有行的更新(更新您要更改的行,以及所有需要移动的行)。但是,如果您对优先级有唯一性约束,那么几乎肯定会违反它。

关于Mysql列索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821677/

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