gpt4 book ai didi

mysql - MySql 将如何处理在查询的其他部分使用待更新字段的更新?

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

假设我有以下声明:

UPDATE time_tracking_table 
SET `end` = NOW(), `duration` = TIME_TO_SEC(TIMEDIFF(`end`,`start`))
WHERE `end` > NOW()

我想要实现的是以下内容(使用晚上 10 点作为 NOW() 的示例):“找到 end 晚于 then 的所有行晚上 10 点,然后更新该行的 end 并将其设置为晚上 10 点,然后计算该行的 start 与新值(晚上 10 点)之间的差异作为 持续时间”。

几天来我一直在测试上面的查询,它似乎工作正常。我的问题是:

a) 它是否可靠(或者考虑到同时更新 end 和使用 end 是否存在某种竞争条件在 wheretimediff) 和...

b) 即使它确实有效,是否有更好的方法来实现这一目标?

非常感谢您的时间和专业知识!

最佳答案

来自 MySQL docs on UPDATE ...

The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL.

UPDATE t1 SET col1 = col1 + 1, col2 = col1;

关于mysql - MySql 将如何处理在查询的其他部分使用待更新字段的更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840538/

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