有没有办法在更新mysql查询上定义变量?

时间:2012-07-02 02:03:45

标签: mysql

我的意思是:

update table_name set field_1=if(date_add(data_field,interval 30 hour) >= now(),1,0), field_2=if(date_add(data_field,interval 30 hour) >= now(),1,0) where ...
好吧,在这种情况下,我需要使用date_add(data_field,间隔30小时),两次,有没有办法将它存储在一个变量或类似的东西?那我就不需要两次打电话了。

感谢。

2 个答案:

答案 0 :(得分:2)

这是一种不必要的优化,因为查询优化器会识别出函数调用是确定性的,缓存调用它的结果并重用该结果代替第二次调用。

答案 1 :(得分:1)

不确定

set @mydate := date_add(data_field,interval 30 hour);

update table_name set
field_1=if(@mydate >= now(),1,0), 
field_2=if(@mydate >= now(),1,0)
where ...

Fyi,这些被称为user defined variables