【问题标题】:How can I write a query that returns a row for every distinct value in one column and returns an arbitrary value from another column?如何编写一个查询,为一列中的每个不同值返回一行,并从另一列返回任意值?
【发布时间】:2012-01-27 17:54:54
【问题描述】:

我想找到以下问题的简单解决方案。

我有一张这样的桌子

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}

我想要一个特定名称的条目,并且我需要在第二列中与此名称相关联的任何 GUID。 (返回的 GUID 是任意的)

感谢您的建议。

【问题讨论】:

  • 什么关系型数据库?您如何定义要返回的 guid?是任意的吗? GUID 的数据类型是什么,因为它们看起来不像实际的 guid?
  • 给定您的示例,这意味着您想要按字典顺序排列的最低 GUID?
  • 您希望给定名称使用哪个 GUID?
  • 选择哪个 guid 是任意的。我表中 guid 的数据类型是字符串。
  • @user974631 - 询问的原因是,如果您在 SQL Server 上,则不能在 uniqueidentifier 列上使用 MIN,但与这种情况无关。

标签: sql sql-server filter duplicates


【解决方案1】:

假设返回什么 GUID 是无关紧要的;只要它与其中一个名称有关联。

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

【讨论】:

  • 它可以工作,但查询输出有点奇怪 = "checkDEC{09006050-90E3-46d8-965E-8151F0DA6215}" 它应该是 " checkDEC{09006050-90E3-46d8-965E-8151F0DA6215}“有什么想法吗?
  • @user974631 - 您需要为列 min(GUID) AS GUID 提供别名。
  • 井名和 GUID 可能都是保留字。粘贴的输出看起来像查询正在返回 XML 输出。不知道为什么。
  • 是的,确实如此。我在 uml 工具企业架构师中做 sql 查询,它返回 xml 文档作为 qry 结果。
【解决方案2】:

只是提到另一种方法(xQbert 已经回答了这个问题)。你可以做点什么:

SELECT DISTINCT ON (Guid) Name, Guid  
FROM Table  

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2023-02-04
    相关资源
    最近更新 更多