我觉得一个例子更好地说明了我的问题。
我想要做的是为每个客户选择最近购买日期一年前的每次购买。因此,如果客户 A 最近一次购买是 2017 年 1 月 5 日,那么我想要他们从 2016 年 1 月 5 日到 2017 年 1 月 5 日期间的购买。但是,如果某人最近一次购买是 2017 年 2 月 2 日,我只想要他们从 2016 年 2 月 2 日到 2 月 2 日的购买2 2017 年。
我已经能够手动输入日期来执行此操作,但我无法执行此操作,因为我想将此数据实现到自动化模型中
最佳答案
与获取每个客户端的最近时间的子查询连接,然后在连接条件中使用该子查询。
SELECT p.*
FROM purchases AS p
JOIN (SELECT client_id, MAX(purchase_data) AS maxdate
FROM purchases
GROUP BY client_id) AS m
ON p.client_id = m.client_id
AND p.purchase_date BETWEEN DATE_SUB(m.maxdate, INTERVAL 1 YEAR) AND m.maxdate
关于mysql - SQL:如何使用变量单独过滤行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44730831/