我正在尝试编写一个SQL函数来实现类似以下功能:
SELECT
person.id,
person.phonenumber
FROM
person INNER JOIN activity ON person.id = activity.personid
WHERE
MAX(activity.activitydate) < DATE_SUB(CURDATE(), INTERAVAL 180 DAY);
每次联系一个人时,我们会为他们创建一条活动记录,包括注释等。因此,我正在寻找所有在过去180天内没有被联系过的人。显然,在where子句中无法使用max函数,所以这种方法行不通。
我看到了this,但是mysql没有with语句。
此外,我尝试过...
SELECT
person.id,
person.phonenumber,
MAX(activity.activitydate) as ndate
FROM
person INNER JOIN activity ON person.id = activity.personid
WHERE
ndate < DATE_SUB(CURDATE(), INTERVAL 180 DAY)
GROUP BY person.id;
但是ndate是未知的。 有任何想法我该怎么做?
MAX()
值集合,而不是每个查询的值,例如SELECT MAX(activity.activitydate)
。他最初的查询只是假设性的,无效的。 - Marc Bollinger