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

标签 mysql

我有一个更新查询,它计算大量 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/

相关文章:

java - 如何在mysql数据库中插入记录时调用java方法

mysql - 10分钟后触发(MySql)

php - MYSQL PHP使用查询结果在foreach循环中重新查询(复杂-我认为)

java - JPA 的 SQL 结构-行还是列?

mysql - 当搜索一系列值时,MySQL 是否保持 O(logn) 的时间复杂度?

mysql - 配置单元(或 MySQL): Finding event of different type with maximum timestamp

mysql - 我需要连接 2 个表,并在给定的任何列与其他表上的相应列匹配时获取结果

mysql - Node Mysql 异步多个查询

php - Laravel 查询生成器统计所有 25 到 35 岁的单例

php - 尝试传递数组时 SQL 不更新