所以我有以下WHERE语句的查询
WHERE
(SELECT max(pa.txndate)
FROM player_activity pa
WHERE pa.userID = customer_profile.userID
) = date(CURDATE()) - INTERVAL 7 DAY
我的查询实际上还有其他几个子查询,但是有人告诉我所有子查询都会降低性能,因此我需要使用存储过程。
创建了以下内容
CREATE PROCEDURE `getMaxPaDate`()
BEGIN
SELECT userid, max(txndate)
FROM player_activity
GROUP by userid;
END
但是,我对如何调用存储过程一无所知,因此毫不奇怪,以下内容对我不起作用。
WHERE
call getMaxPaDate() = date(CURDATE()) - INTERVAL 7 DAY
救命?
最佳答案
将其设置为存储过程不会提高性能。您需要做的是使用联接。
SELECT cp.*
FROM customer_profile AS cp
JOIN (SELECT userID
FROM player_activity
GROUP BY userID
HAVING MAX(pa.txndate) = TODAY() - INTERVAL 7 DAY) AS pa
ON cp.userID = pa.userID
关于mysql - 调用要在where语句中使用的存储过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39073215/