SQL:GROUP BY记录,然后从每个组中获取最后一条记录?
问题描述:
可能重复:
SQL Server: Only last entry in GROUP BYSQL:GROUP BY记录,然后从每个组中获取最后一条记录?
我有这样的一个表:
id| name | attendence
1 | Naveed| 1
2 | Naveed| 1
3 | Adil | 1
4 | Adil | 1
我用下面的查询:
SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name
上面的查询结果:
id| name | attendence
3 | Adil | 1
1 | Naveed | 1
问:
以上内容由名称结果分组行,但显示各组第一行。我想从每个组中选择最后一行(通过id)。
例如:
id| name | attendence
2 | Naveed | 1
4 | Adil | 1
如何编写上述结果的查询。
感谢
答
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
甚至可能不会再被需要的群体。
+0
它工作。谢谢。 – NAVEED 2010-08-11 05:04:21
答
使用以下查询:
SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name ORDER BY `id` DESC LIMIT 1
这只会选择符合最高的ID的标准行。
答
SELECT MAX("id"), "name" FROM "test" WHERE "attendence" = 1 GROUP BY "name"
答
SELECT Name, Max(ID) FROM table WHERE attendance = 1 GROUP BY Name
不'SELECT * FROM测试WHERE考勤= 1 GROUP BY name'抛出误差Δθ – egrunin 2010-08-10 14:48:14
@egrunin:假设NAVEED正在使用MySQL:http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html – 2010-08-10 15:05:31
http://php.azerot.com/sql -group-by-get-last-record-from-each-group/ 这是你的问题的答案相同的问题 – syraz37 2012-03-30 07:21:20