MYSQL:如何更新具有相同值的多个列

时间:2014-12-03 17:41:21

标签: mysql

我有一个更新查询,可以在大量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的次数。什么是最有效的方法?

2 个答案:

答案 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作为其值。