2012-06-26 79 views
2

我有一張表(稱爲表myTable)。獲取列x的非重複項,但列y的重複項

它有這樣的數據:

編號/名稱

1 jake 
2 chris 
3 sally 
4 billy 
1 tom 
5 cathy 

(我意識到這是一個貧窮的設置,但我沒有得到這樣的設置的奢侈品)



我需要查詢該表,以便將結果與返回:

1 jake 
2 chris 
3 sally 
4 billy 
5 cathy 

OR

2 chris 
3 sally 
4 billy 
1 tom 
5 cathy 


不要緊,它的名字被用於重複號返回...只有一個得到恢復。

這是我不工作的嘗試:

with 
a as (
     SELECT number 
     FROM myTable 
), 

b as (
     SELECT number, name 
     FROM myTable 
) 


SELECT a."number", b."name" 

FROM a 
left join b on a."number" = b."number" 

回答

2

使用GROUP BY,以確保每個number只回來一次,並使用聚合函數挑值之一name

SELECT number, MAX(name) AS name 
FROM yourtable 
GROUP BY number 
+0

rofl rofl。 MAX函數,沒想到在一個字符串上使用它!謝謝!!如果允許,我會在9分鐘內將此標記爲答案。謝謝!! – adam

0

試試這個。由於您不關心屬於某個數字的多個名稱中的哪一個被返回,您可以使用max或min函數。

select number, max(name) 
from myTable 
group by number