SQL:在MySQL中选择最后一次用钱支付的时间


SQL: select last pay time with money in MySQL

我有一个名为"pay_logs"的表,包括用户的支付日志,

1。字段如下:

================================================

id           | primary key, auto_increment
user_account | NOT NULL, NOT UNIQUE
money        | DEFAULT 0.00
time         | NOT NULL

================================================

2。表中数据

================================================

id | user_account | time | money
1 | Mary | 1480000008 | 10.00
2 | Mary | 1480000009 | 5.00
3 | John | 1480000001 | 2.00
4 | John | 1480000002 | 1.00

================================================

和我想选择用户的最后支付时间与它的钱,那么如何在一个SQL

中做到这一点呢?

我的SQL

select *, max(time)
from pay_logs
group by user_account;

3。结果是:

================================================

id | user_account | time | money | max(time)
3 | John | 1480000001 | 2.00 | 1480000002
1 | Mary | 1480000008 | 10.00 | 1480000009

================================================

4。但它不会像我希望的那样工作:

我想要的数据是id为2和4的记录,有人能帮我吗?我想用一个SQL,就SQL,如果SQL不能完成这项工作,还有其他解决方案吗?THX TXH TXH ~~~

注:我正在使用PHP

使用查询作为基础,您需要使用group byjoin:

select pl.*
from pay_logs pl join
     (select user_account, max(time) as maxt
      from pay_logs
      group by user_account
     ) ua
     on pl.user_account = ua.user_account and pl.time = ua.maxt;

您的查询使用MySQL (mis)功能,允许group by中的列不在group by子句中。除非你真的知道你在做什么,否则你不应该这样做。