根据表列的特定组合获得独特的结果?

时间:2012-02-10 17:52:49

标签: sql oracle

我遇到一些问题,从具有一些重复值的表中返回唯一结果。我使用的表格如下:

Venue ID  | Venue   | Venue Phone |  Venue Address| 
10659      Ottawa
10587      Toronto
10967      Ottawa
10492      Hamilton
10595      Hamilton

我需要正确显示场地名称,但返回场地ID(我在Oracle Apex中使用值列表时只能使用两列)。问题是场地名称可以重复,但场地ID始终是唯一的。因此,使用我一直用于其他列表的查询,我将最终得到重复的场地名称。有没有可以实现我想要的查询?

3 个答案:

答案 0 :(得分:1)

如果你不关心选择哪个场地ID,你可以简单地做一个GROUP BY并选择一个更大的VENUE_ID

SELECT max(venue_id) venue_id, venue venue_name
  FROM table_name
 GROUP BY venue

答案 1 :(得分:1)

您也可以使用Windows功能,例如

SELECT * 
  FROM (
        SELECT venue_id, 
               venue 
               --other fields
               ROW_NUMBER() OVER (ORDER BY venue_id PARTITION BY venue) AS num
          FROM table_name
       )a
WHERE num=1

答案 2 :(得分:0)

SELECT MIN(ID), VENUE
FROM   <table>
GROUP BY VENUE

会给你......

Venue ID  | Venue   | More columns 
10659      Ottawa
10587      Toronto
10967      Ottawa
10492      Hamilton

不确定这是不是你想要的?