Possible Duplicate:
SQL Server: Only last entry in GROUP BY
I have a table like this:
id| name | attende开发者_JS百科nce
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
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.
SELECT MAX("id"), "name" FROM "test" WHERE "attendence" = 1 GROUP BY "name"
SELECT Name, Max(ID) FROM table WHERE attendance = 1 GROUP BY Name
Use the following query:
SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name ORDER BY `id` DESC LIMIT 1
That will only select the row that meets the criteria with the highest id.
精彩评论