鲜明的SQL查询

问题描述:

我有一个SQL Server 2008数据库在一个表中的下列信息:鲜明的SQL查询

ID Name 
-- ---- 
1 John 
2 Jill 
3 John 
4 Phil 
5 Matt 
6 Jill 

我想在下拉列表中显示的唯一的名称。正因为如此,我只需要一个与唯一名称关联的ID。我知道它很脏。我没有创造这个烂摊子。我只需要其中一个ID的唯一名称。我该如何编写一个能够做到这一点的查询?我知道由于ID字段,以下内容不起作用。

SELECT DISTINCT 
    [ID], [Name] 
FROM 
    MyTable 
+2

一个很好的问题是:为什么有dupli卡茨在桌子上? 它是功能需求的一部分吗? – 2010-11-05 13:43:51

SELECT MIN(ID) AS ID, [Name] 
FROM MyTable 
GROUP BY [Name] 

这将返回第一个(即最低)ID为每个不同的名称

你也可以用排名做到了功能

SELECT 
Id, 
Name 
FROM 
(
    SELECT 
    Id, 
    [Name], 
    RANK() OVER (PARTITION BY [Name] Order By Id) As Idx 
    FROM Test 
) A 
WHERE Idx = 1 

要获得排名在理解功能阅读: http://msdn.microsoft.com/en-us/library/ms176102.aspx