SQL:在MySQL中选择上次付款时间

时间:2015-07-11 13:58:11

标签: php 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 ~~~

P.S.I我正在使用PHP

1 个答案:

答案 0 :(得分:1)

以您的查询为基础,您需要使用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子句中的列。除非你真的知道你在做什么,否则你永远不应该这样做。