【发布时间】:2017-04-04 06:39:58
【问题描述】:
我正在尝试执行 MYSQL 查询,在其中获取用户最近的购买记录,然后查看是否符合特定条件。这是我放在一起的查询:
select
users_purch.purch_date as purchase_date,
users_purch.total_amount as purchase_amount,
users.*
from
users
left join
(
select
max(date) as purch_date,
user_id,
total_amount
from
users_purchases
group by
user_id
) as users_purch
on users_purch.user_id = users.id
where
users_purch.purch_date < '2016-11-01'
and users_purch.total_cost < 112.49
order by
users_purch.purch_date desc
查询似乎有效,但在某些方面失败了。例如,如果用户有多个购买条目,则它会获取最大日期,但查询检索到的 total_cost 金额与最大日期不在同一行。如何重写此查询以提供最新的完整购买记录?
谢谢!
【问题讨论】:
-
发布您的表格概览会有所帮助。我们可以根据表格布局(也许)为您提供一些关于查询的新见解
-
您的内部查询
users_purch似乎是错误的。是total_amount是sum(amount)??您的Group by只有一列,但您在select中有 2 列以及一个聚合函数 -
这和
php标签有什么关系? -
请注意,LEFT JOIN 在此处作为常规 INNER JOIN 执行,这要归功于 WHERE 子句条件。
-
感谢大家的cmets。很有帮助!