我有以下声明:
SELECT user_id, myMysqlFunction(user_id) FROM users_to_days GROUP BY user_id;
该表每个用户和每天存储一行。
问题是MySql为每一行调用函数"myMysqlFunction(user_id)"
并在此之后对行进行分组。
我的目标是只执行一次函数(出于性能原因)。
我尝试了以下状态但没有成功:
SELECT user_id, IF(`date` = min(`date`),myMysqlFunction(user_id),0) FROM users_to_days GROUP BY user_id;
MySql仍然为每一行执行语句。 如果我写一个静态日期(例如'2014-09-01') - 它可以工作:
SELECT user_id, IF(`date` = '2014-09-01',myMysqlFunction(user_id),0) FROM users_to_days GROUP BY user_id;
但我不知道分钟。执行时用户的日期。 (对每个用户来说都不一样)
答案 0 :(得分:0)
您可以尝试子查询:
SELECT user_id, myMysqlFunction(user_id)
FROM (SELECT user_id
FROM users_to_days
GROUP BY user_id);
答案 1 :(得分:-1)
编辑:评论被拆分了,我想说:
我的意思是:尝试$ date = date(' Y-m-d');这将获得用户运行它的时间。把它放在min($ date)中,它应该正常工作。