gpt4 book ai didi

mysql - 使用当前行和前一行之间的差异更新行

转载 作者:行者123 更新时间:2023-11-30 23:16:32 25 4
gpt4 key购买 nike

我在获取增量值时遇到了一些困难:

id  value  delta
1 929 928
2 947 18
3 950 21
4 952 23

Delta 列应更新为同一表中连续行的之间的差异。

我的意思是, 第二行 Delta 值应为 [947 - 929]=18 第三行 Delta 值应为 [950 - 947]=3 第四行 Delta 值应为 [952 - 950]=2

默认 929 始终是第二个参数。这就是它造成问题的原因。我使用了以下查询。这有什么问题吗?

update table_name tt1 left outer JOIN table_name tt2 ON  tt1.value>tt2.value set
tt1.delta = (tt1.value-tt2.value);

最佳答案

当您进行多表更新时(即使这是同一张表,因为您将其用作引用,所以它是多表更新)您通常不会执行 JOIN 子句(根据此处的 mysql 文档: http://dev.mysql.com/doc/refman/5.0/en/update.html)。

你可以这样做:

UPDATE table_name tt1, table_name tt2
SET tt1.delta = (tt1.value - tt2.value)
WHERE
tt2.id = (tt1.id + 1)

一个好的调试技术是将 UPDATE 更改为 SELECT 并验证增量字段是否是您想要的:

SELECT tt1.*,  (tt1.value - tt2.value) AS delta
FROM table_name tt1, table_name tt2
WHERE
tt2.id = (tt1.id + 1)

关于mysql - 使用当前行和前一行之间的差异更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17448945/

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