我正在尝试执行 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 金额与最大日期不在同一行。如何重写此查询以提供最新的完整购买记录?
谢谢!
最佳答案
您必须再次加入 user_purchases
表才能获取有关日期的信息:
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
from
users_purchases
group by
user_id
) as users_purch
on users_purch.user_id = users.id
left join
(
select
user_id,
date,
total_amount
from
users_purchases
) as users_purch2 on users_purch.user_id = users_purch2.user_id and
users_purch2.date = users_purch.purch_date
where
users_purch.purch_date < '2016-11-01'
and users_purch.total_cost < 112.49
order by
users_purch.purch_date desc
关于php - MYSQL - 获取用户和最近的购买数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200010/