SQL:GROUP BY记录,然后从每个组中获取最后一条记录?

问题描述:


可能存在重复:

我有这样的表:

id| name  | attendence
1 | Naveed| 1
2 | Naveed| 1
3 | Adil  | 1
4 | Adil  | 1

我使用以下查询:

I use following query:

SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name

以上查询的结果:

The result with above query:

id| name   | attendence
3 | Adil   | 1
1 | Naveed | 1



问题:



以上结果组按名称排序,但显示每个组的第一行。我想从每个组中选择最后一行(按ID)。

Question:

Above result group rows by name but show first row from each group. I want to select last row(by id) from each group.

例如:

For example:

id| name   | attendence
2 | Naveed | 1
4 | Adil   | 1

如何为上述结果编写查询。

How to write query for above result.

感谢

Thanks

SELECT a.* 
FROM test a 
WHERE a.attendence = 1 
AND NOT EXISTS (select 1 from test where name = a.name and id > a.id and attendence = 1)
GROUP BY name 

可能不再需要该群组了。

Might not even need the group by anymore.