mysql - SQL:如何使用变量单独过滤行?

标签 mysql sql

我觉得一个例子更好地说明了我的问题。

我想要做的是为每个客户选择最近购买日期一年前的每次购买。因此,如果客户 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/

相关文章:

PHP数组添加增量

MySQL 选择性能

mysql - SQL 节点未连接到 mysql 集群中

mysql - Rails - 按模型中的商店属性搜索

php - 由于添加了双引号,json 对象变成了字符串?

mysql - 如何让 MySQL Server 在 Windows 10 上的 XAMPP 上运行?

php - 从复选框中获取选中的值,即从数据库中获取数据

mysql - 如何在 MySQL 中用另一个表的前 75% 和剩余 25% 创建两个表?

sql - 如何比较 n :m assignments?

SQL 克隆和转换日期列