我有一个像table1一样的
|id | user_id | amount | group_id|
|1 | 1 | 5 | 1 |
|2 | 2 | 1 | 1 |
|3 | 3 | 3 | 1 |
|4 | 3 | 9 | 2 |
|5 | 1 | 4 | 2 |
Run Code Online (Sandbox Code Playgroud)
我只想select为每个group_id找到最后一个:
|id | user_id | amount | group_id|
|3 | 3 | 3 | 1 |
|5 | 1 | 4 | 2 |
Run Code Online (Sandbox Code Playgroud)
有我的SQL:
select max(id) , user_id , amount, group_id
from table1
group by group_id
Run Code Online (Sandbox Code Playgroud)
我不知道它是否有效.按功能分组是否列出了每个组的最后一条记录的结果?
我是否必须使用table1 join table1来解决这个问题?
它不像那样工作.您可以id为每个组获得最高分,max(id)但其他非聚合列无法预测为您想要的那些.
您可以使用子查询选择最高ids并将该结果连接到表以获取其余列.
select t1.*
from table1 t1
join
(
select max(id) as id
from table1
group by group_id
) t2 on t1.id = t2.id
Run Code Online (Sandbox Code Playgroud)