我有一个SQL Server 2008数据库,表中包含以下信息:
ID Name
-- ----
1 John
2 Jill
3 John
4 Phil
5 Matt
6 Jill
我想在下拉列表中显示唯一名称。因此,我只需要一个与唯一名称相关联的ID。我知道它很脏。我没有制造这个烂摊子。我只需要使用其中一个ID的唯一名称。如何编写将执行此操作的查询?我知道由于ID字段,以下内容不起作用。
SELECT DISTINCT
[ID], [Name]
FROM
MyTable
答案 0 :(得分:16)
SELECT MIN(ID) AS ID, [Name]
FROM MyTable
GROUP BY [Name]
这将返回每个不同名称的第一个(即MINimum)ID
答案 1 :(得分:0)
您也可以使用等级超过功能
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