2017-08-14 99 views
-3

我有這樣的數據:選擇不重複的行

Name  Age 
------------------- 
HieuDoan 15 
LinhNa  16 
HieuDoan 20 
NamL  17 

我要選擇沒有重複數據的所有行,結果我需要:

Name Age 
------------- 
LinhNa 16 
NamL 17 

如何查詢呢?數據源是Redshift。

謝謝大家。

+3

你嘗試過什麼?向我們顯示您的查詢 –

+0

2人擁有相同的姓名很常見,您的要求背後的商務邏輯是什麼? – tibetty

+0

也指定你正在使用的DBMS – Hatik

回答

1

根據你的榜樣,而不是考慮的事實,使得這樣的查詢是錯誤的,因爲名稱和年齡可以是相同的不同的人,在甲骨文我會做這樣的事情,使用窗口功能

SELECT * 
FROM 
    (SELECT A.*, 
      count(name) over (partition by name order by name) as cnt 
    FROM MY_TABLE A) 
WHERE cnt = 1 
1

試試這個嵌套查詢:

select name, age from (select *, count(*) as no from student group by name) where no = 1; 

在sqlite3的,從我的實驗返回記錄集:

LinhNa|16 
NamL|17 
0

如果您只需選擇沒有重複數據的所有行,則可以採用以下方法。

SELECT name, age from 
     (SELECT name, age, 
     (SELECT count(*) 
      FROM table1 t1 
      WHERE t1.name = t2.name 
      GROUP BY t1.name) AS c1 
     FROM table1 t2) table2 
    WHERE c1 = 1; 

內查詢將返回nameagecount of names和外部查詢會過濾掉與count=1名稱。

以下是輸出。

enter image description here

您可以查看演示here