我正在为希望通过即将开展的活动对数据进行分类的客户编写CMS。
有一个名为customers
的表格,其中包含cust_id
列标识的所有客户。
还有一个名为activities
的表,其中有一个cust_id
列用于将其与客户配对,还有一个date_last_done
字段用于指定任务何时完成。客户可以记录许多活动。
我想抓取11个月前完成最近(date_last_done
desc)活动的所有客户。
这是我的尝试:
SELECT
*
FROM
customers
INNER JOIN
activities
ON
activities.cust_id = customers.cust_id
WHERE
(SELECT
date_last_done
FROM
activities
WHERE
cust_id = ???
ORDER BY
date_last_done
DESC)
< date() - 11months
我如何编辑我的查询来执行此操作?
答案 0 :(得分:1)
使用子查询加入customers
表,该子查询返回符合条件的活动的客户。
SELECT c.*
FROM customers AS c
JOIN (SELECT cust_id
FROM activities
GROUP BY cust_id
HAVING MAX(date_last_done) < DATE_SUB(NOW(), INTERVAL 11 MONTH)) AS a
ON c.cust_id = a.cust_id