我有一张名为" pay_logs"的表格,包括用户的付款日志,
=============================================== =
id | primary key, auto_increment
user_account | NOT NULL, NOT UNIQUE
money | DEFAULT 0.00
time | NOT NULL
=============================================== =
=============================================== =
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;
=============================================== =
id | user_account | time | money | max(time)
3 | John | 1480000001 | 2.00 | 1480000002
1 | Mary | 1480000008 | 10.00 | 1480000009
=============================================== =
我想要的是ID为2和4 的记录, 所以任何人都帮助我?我想在一个SQL中执行此操作,只需SQL, 如果SQL愚蠢地做这个工作,任何其他解决方案? THX TXH TXH ~~~
P.S.I我正在使用PHP
答案 0 :(得分:1)
以您的查询为基础,您需要使用group by
和join
:
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
子句中的列。除非你真的知道你在做什么,否则你永远不应该这样做。