2014-02-15 131 views
0

我有表选择在SQL Server 2008

ID  Name  Book 
1  Aaron  HTML 
2  Charles  DESIGN 
3  Mark  SQL 
4  Charles  JAVA 
5  Charles  C++ 
6  Mark  C# 

我想SELECTName最大ID行,其结果是这样的:提前

ID  Name  Book 
1  Aaron  HTML 
5  Charles  C++ 
6  Mark  C# 

感谢。

+0

通过_Last row_,你的意思是你想要的每个'Name'具有最大'ID'的行? –

+0

是的。具有最高ID的行每个名称 – MarckxMan

回答

1

快速和肮脏的,但应该工作:

select * from [mytable] where id in 
    (select max(id) as id from mytable group by name) 
+2

子查询将导致问题,因为它选择_two_列而不是一个。 –

+0

固定 - 谢谢。 –

+0

我尝试和我有一个错误,如迈克尔Berkowski说。 – MarckxMan

2

可以使用ROW_NUMBER()功能与CTE

;WITH CTE AS 
(
    SELECT ID, Name, Book, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY ID DESC) RN 
    FROM yourTable 
) 
SELECT ID, Name, Book 
FROM CTE 
WHERE RN = 1 

Fiddle Demo

+1

在我的其他问题尝试了这一点,它的工作原理,谢谢 – MarckxMan