我在执行 SQL 查询时遇到问题。 这是我的购买表:
id email status date
1 user1@server.com confirmed 2014-10-01
2 user1@server.com confirmed 2014-10-02
3 user2@server.com pending 2014-10-02
4 user3@server.com pending 2014-10-02
5 user1@server.com pending 2014-10-03
6 user3@server.com pending 2014-10-03
7 user1@server.com pending 2014-10-04
8 user2@server.com pending 2014-10-04
9 user2@server.com pending 2014-10-05
我想为每封电子邮件选择最近的待处理购买,因此我期望的结果是:
id email status date
6 user3@server.com pending 2014-10-03
7 user1@server.com pending 2014-10-04
9 user2@server.com pending 2014-10-05
有什么想法可以实现这一点吗?
提前致谢。
最佳答案
您可以使用子查询来做到这一点:
select p.*
from purchase p join
(select email, max(id) as maxid
from purchase
where status = 'pending'
group by email
) pmax
on p.id = pmax.maxid;
这假设“最新”是具有最大 id
的那个。
关于MYSQL:从多列中选择最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26510192/