2

我的意思是:

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,interval 30 小时) 两次,有没有办法将它存储在变量或类似的东西中?那么我不需要调用它两次。

谢谢。

4

2 回答 2

2

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

于 2012-07-02T02:22:30.617 回答
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 ...

仅供参考,这些被称为用户定义的变量

于 2012-07-02T02:11:10.633 回答