代码之家  ›  专栏  ›  技术社区  ›  Jacob Nelson

当其中两行需要唯一时,选择三行(SQL)

  •  0
  • Jacob Nelson  · 技术社区  · 14 年前

    首先,我使用的是Oracle 10g Express

    因此,我要选择三列:

    [域名][索引路径][集合名称]

    现在有两列我希望是唯一的:

    [域名][索引路径]

    所以我的问题是,我应该如何:

    select unique domain_name, index_path from TABLENAMEHERE
    

    同时选择列[集合名称]

    4 回复  |  直到 14 年前
        1
  •  3
  •   nvogel    14 年前

    如果域名称、索引路径的某些组合有多行,那么您希望从这些行中看到集合名称的哪个值?如果你不介意哪种价值,那就做:

    SELECT domain_name, index_path, MIN(collection_name) collection_name
    FROM TABLENAMEHERE
    GROUP BY domain_name, index_path;
    
        2
  •  1
  •   Adam Musch    14 年前
    select domain_name, index_path, collection_name
      from my_table outr
           inner join 
             (select domain_name, index_path, collection_name, 
                     max(gen_timestamp) 
                        over (partition by domain_name, index_path) gen_timestamp
                from my_table) innr
     where outr.domain_name = innr.domain_name
       and outr.index_path  = innr.index_path
       and outr.collection_name = innr.collection_name
       and outr.gen_timestamp   = innr.gen_timestamp
    
        3
  •  0
  •   Denis Valeev    14 年前

    只是替换 unique 具有 distinct 在你的询问中。

    哦。。。

    那么应该是这样的:

    select [domain_name], [index_path], min([collection_name]) 
    from TABLENAMEHERE
    group by [domain_name], [index_path]
    
        4
  •  0
  •   Mike Forman    14 年前

    您可以按域名和索引路径分组,每个组包含一个(最小或最大)集合名称值。