Mysql Query查找Purchase_history表中所购商品的最后交易日期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql Query查找Purchase_history表中所购商品的最后交易日期相关的知识,希望对你有一定的参考价值。
表:purchase_history包含用户的所有详细信息
字段包括:id,uid,purchase_date,item_id,item_size,item_color
其中id是主键。
类似的uid有很多行。例如
id | uid | purchase_date | item_id | item_size | item_color
1 | 200 | 2016-10-22 | 1021 | 3 | red
2 | 122 | 2016-08-02 | 21 | 1 | black
3 | 200 | 2016-05-01 | 222 | 1 | blue
4 | 101 | 2016-01-07 | 102 | 1 | red
所以现在我希望单个查询通过uid获取最后一个事务日期,item_id和uid组。我用下面的查询:
select uid, max(purchase_date), item_id from purchase_history group by uid;
它给了我正确的uid和购买日期,但是没有从最后一行中挑选商品ID。它来自第一排。有什么方法可以使用uid和purchase_date从最后一行找到项目ID吗?
答案
试试这个:
select uid, max(purchase_date) as date, item_id from purchase_history group by uid ORDER by date desc,item_id desc
确保item_id类型是整数。
另一答案
您可以在子查询中找到每个用户的最大购买日期,并将其与主表连接,如下所示:
select t1.uid, t1.purchase_date, t1.item_id
from purchase_history t1
inner join (
select uid, max(purchase_date) purchase_date
from purchase_history
group by uid
) t2 on t1.uid = t2.uid
and t1.purchase_date = t2.purchase_date;
注意:如果有多个最大日期的行,它将为uid提供多行。
另一答案
使用相关子查询:
SELECT uid, purchase_date, item_id
FROM purchase_history p1
WHERE purchase_date = (
SELECT MAX(purchase_date)
FROM purchase_history p2
WHERE p2.uid = p1.uid
);
另一答案
试试这个查询
select * from (select * from purchase_history order by purchase_date asc) purchase_history group by uid;
以上是关于Mysql Query查找Purchase_history表中所购商品的最后交易日期的主要内容,如果未能解决你的问题,请参考以下文章