MySQL函数只有group by一次

时间:2014-09-23 15:24:30

标签: mysql function group-by

我有以下声明:

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;

但我不知道分钟。执行时用户的日期。 (对每个用户来说都不一样)

2 个答案:

答案 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)中,它应该正常工作。