2016-08-18 43 views
0

比方说,我们有列“名称”一表名为Employee:此查询的替代方法?

+---------+ 
| Name | 
+---------+ 
| Jack | 
+---------+ 
| Paul | 
+---------+ 
| Jack | 
+---------+ 

有了明显的名称,我们可以运行此查询:

Select DISTINCT Name 
from Employee 

是否有任何其他方式来获取不同值?

+3

有很多其他的方法。这是最好的。 –

+3

为什么?您的查询是标准方式。 – jarlh

回答

4
Select Name 
from Employee 
Group by Name 

这也给出相同的结果

4

我不知道为什么你不希望使用不同的,但你可以GROUP BY

Select Name 
from Employee 
group by Name; 

如果你只是想获得一些乐趣:

select top 1 with ties Name 
from Employee 
order by ROW_NUMBER() over(partition by Name order by Name) 
5

GROUP BY是愚蠢的,但UNION更糟糕:

select name from Employee 
union 
select name from Employee 

你也可以做INTERSECT ...

+0

它的工作原理!但我没有得到它... – BlindCat

+3

从表中取出所有名称,并使用UNION再添加一次。由于UNION删除结果重复项,每个名称将只返回一次! – jarlh

0
;with #temp(Select Name,row_number()over(partition by name order by name desc) as seq) 
Select Name from #temp where seq=1 
+2

嗨Mani;你的代码可能是正确的,但它会在某些情况下做出更好的回答;例如,您可以解释如何以及为什么这个提议的变更可以解决提问者的问题,或许还包括指向相关文档的链接。这将使它对他们更有用,而且对寻求类似问题解决方案的其他网站读者也更有用。 –