所以我有以下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/

10-12 18:00