如何编写一个查询,该查询返回一列中每个不同值的行并从另一列返回任意值?

问题描述:

我想找到一个希望简单的解决方案来解决以下问题。如何编写一个查询,该查询返回一列中每个不同值的行并从另一列返回任意值?

我有这样

Name - GUID 

NameA {AH42-AJG5-AFHA}  
NameA {AJD4-AFJ4-HVFA}  
NameB {BGA4-AJGA-GHAA} 
NameB {JGA8-GGK1-KLP9}  
NameA {KGA4-JAD4-GJA9} 

我想要的结果的一个例子的表是

NameA {AH42-AJG5-AFHA} 
NameB {BGA4-AJGA-GHAA} 

正是我想要1项针对特定的名字,我需要将其与相关的GUID这个名字在第二列。 (返回的GUID是任意的)

感谢您的建议。

+0

什么RDBMS?你如何定义要返回哪个GUID?它是任意的吗?还有什么是'GUID'的数据类型,因为它们看起来不像实际的GUID? – 2011-12-25 22:19:52

+0

鉴于您的示例,这意味着您希望按照字典顺序排列最低的GUID? – fge 2011-12-25 22:20:17

+0

你想要一个给定名称的GUID? – 2011-12-25 22:20:30

假设返回的GUID是不相关的;只要它有一个关联到其中一个名字。

Select [name], min([GUID]) as mGuid 
FROM tableLikeThis 
Group by [Name] 
+0

它实际上是不相关的,我会尝试你的代码。 – user974631 2011-12-25 22:25:52

+0

它的工作原理,但查询输出有点奇怪= “ checkDEC {09006050-90E3-46d8-965E-8151F0DA6215}” 应该是 “ checkDEC {09006050-90E3-46d8-965E-8151F0DA6215}”任何想法? – user974631 2011-12-25 22:29:53

+0

@ user974631 - 您需要为“min(GUID)AS GUID”列提供别名。 – 2011-12-25 22:34:02

只是提出了一个替代方法(xQbert已经回答了问题)。你可以做一些事情:

SELECT DISTINCT ON (Guid) Name, Guid 
FROM Table