鲜明的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
答
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
一个很好的问题是:为什么有dupli卡茨在桌子上? 它是功能需求的一部分吗? – 2010-11-05 13:43:51