我在mysql存储函数中有一个奇怪的问题。该函数返回的结果与我单独运行查询不同。这是我的功能:
DELIMITER $$
CREATE DEFINER=`admin`@`%` FUNCTION `getARetention`
(appID int(10), currentDate DATE)
RETURNS int(11)
READS SQL DATA
DETERMINISTIC
BEGIN
RETURN
(SELECT count(DISTINCT UserId)
FROM
Session
WHERE (Date(Started) = currentDate AND AppId=appID));
END
我是这样称呼它的:
SELECT getARetention(5,DATE('2013-04-03'));
这是单独的查询:
SELECT count(DISTINCT UserId)
FROM
Session
WHERE (Date(Started) = DATE('2013-04-03') AND AppId=5)
该函数返回错误的 2502。单独查询返回 5,这是正确的。另外,如果我从单独的查询中删除“AND AppId=5”,那么它会返回 2502,这意味着在存储的函数中该条件不起作用。
有人知道为什么吗?我有一段时间没有使用 mysql,所以我可能遗漏了一些东西。