我的意思是:
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小时),两次,有没有办法将它存储在一个变量或类似的东西?那我就不需要两次打电话了。
感谢。
答案 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