使用两列从表中选择不同的值

时间:2014-11-11 18:00:25

标签: sql sql-server tsql select distinct

我在表格中有以下数据。

Id   Name
1    Abc
2    Abc
3    Xyz
4    Xyz
5    def
6    def

我希望从查询中获得以下结果

Id  Name
1   Abc
2   Xyz
3   def

我想避免名称列中的重复项。

非常感谢任何帮助。

Select distinct 
    id, name 
from table A 

不起作用,因为ID具有不同的值。

2 个答案:

答案 0 :(得分:2)

改为使用组。

select
  min(id), [name]
from
  tableA
group by [name]

请注意,在您的示例中,与Xyz对应的ID为3和4,因此只有在您破坏表的完整性时才能获得Xyz旁边的2。如果您只是在ID旁边寻找一个自动编号,您可以这样做:

SELECT row_number() OVER (ORDER BY min(id)) id,
       name 
  FROM tableA
group by name

答案 1 :(得分:0)

您可以使用以下方式获取特定结果:

select row_number() over (order by min(id)) as id, name
from table A
group by name;

重新编号行似乎很奇怪,但row_number()会这样做。