我有一个更新查询,它计算大量 DATETIME
记录的 TIMEDIFF
:
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);
但这将根据需要多次重新计算相同的时间差异 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。
希望对您有所帮助 :-)
关于MYSQL:如何更新具有相同值的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278168/