gpt4 book ai didi

mysql - MYSQL中自动递增的列

转载 作者:行者123 更新时间:2023-11-29 17:23:08 26 4
gpt4 key购买 nike

我需要创建一个从 1- 自动递增的列(但是有行数)。但是,我需要该列根据概率列的顺序重新排序。有可能吗?

最佳答案

我通常建议不要将这种排序计算实现为显式表字段。随着表的增长,保持此类信息最新会产生越来越多的开销。相反,您可以只按概率列进行排序;或者,如果您确实需要查询结果中的“排名”,有多种方法可以做到这一点,像这样的方法应该有效:

SELECT @seq := seq + 1, d.*
FROM theRealData AS d, (SELECT @seq := 0) AS init
ORDER BY theRealData.probability
;
<小时/>

我在下面的评论中提到的存储过程的伪代码(我在写这篇文章时没有查找确切的语法,所以可能有一些我忽略的事情)(如果我颠倒了顺序,可能需要调整。 )

CREATE PROCEDURE theProc (newID INT)
BEGIN
DECLARE newProb INT; //Not sure if it is int, but for the sake of example
DECLARE seqAt INT;
SET newProb = SELECT probability FROM theTable WHERE ID = newID;
SET seqAt = SELECT IFNULL(min(seq), 1) FROM theTable WHERE probability > newProb;
UPDATE theTable SET seq = seq + 1 WHERE seq >= seqAt;
UPDATE theTable SET seq = seqAt WHERE ID = newID;
END

如果您传递所有插入的字段,而不是仅在插入后传递新行的 id,则该过程可以自行执行插入操作并使用 last_insert_id() 完成其余工作。

关于mysql - MYSQL中自动递增的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141548/

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