我有一个更新查询,可以在大量TIMEDIFF
条记录上计算DATETIME
:
UPDATE eventlog SET downtime = TIMEDIFF(up_stamp,down_stamp);
这有效,但我需要将此TIMEDIFF
值设置为另一列以及downtime
。这样的事情(不起作用):
UPDATE eventlog SET downtime, downtime_adj = TIMEDIFF(up_stamp,down_stamp);
我知道我可以将它们组合起来:
UPDATE eventlog SET downtime = TIMEDIFF(up_stamp,down_stamp), downtime_adj = TIMEDIFF(up_stamp,down_stamp);
但是这将根据需要重新计算diff 2x的次数。什么是最有效的方法?
答案 0 :(得分:2)
似乎可以使用用户定义的变量,因此TIMEDIFF()
无需运行两次。
试试这个:
UPDATE eventlog SET downtime = @x := TIMEDIFF(up_stamp,down_stamp), downtime_adj = @x;
以下是文档:http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
<强>声明:强>
我刚刚看到你的问题后就读了。我不擅长SQL。
希望有助于:-)
答案 1 :(得分:1)
我刚试过这个,它似乎适用于我的mysql:
UPDATE eventlog SET downtime = TIMEDIFF(up_stamp,down_stamp), downtime_adj = downtime;
downtime
将使用timediff设置,而downtime_adj
将使用新的downtime
作为其值。