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

标签 php sql group-by sql-order-by

<分区>

Possible Duplicate:
SQL Server: Only last entry in 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 

可能甚至不再需要 group by 了。

关于php - SQL:GROUP BY 记录,然后从每个组中获取最后一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449757/

相关文章:

html - 在没有功能的sql查询中剥离图像标签

php - 通过 SQL/PhpMyAdmin 在几篇文章中用 THAT 替换 THIS(句子)

mysql - 选择特定列值与另一个列值接近的行?

sql - 分组后的 IN SQL 计数

php - 如何在 Laravel 5 的所有 View 中共享 Auth::user?

php - 使用 mySQL 和 PHP 从数据库按升序获取最后 3 条记录

php - 具有可变小数位的数字格式

sql - DBMS 中的外部过程

mysql - 如何使用 MySQL 选择有 2 个具有特定值的连续行?

php - 性能:Web 服务器中的大量图像与大量目录