我有這樣的數據:選擇不重複的行
Name Age
-------------------
HieuDoan 15
LinhNa 16
HieuDoan 20
NamL 17
我要選擇沒有重複數據的所有行,結果我需要:
Name Age
-------------
LinhNa 16
NamL 17
如何查詢呢?數據源是Redshift。
謝謝大家。
我有這樣的數據:選擇不重複的行
Name Age
-------------------
HieuDoan 15
LinhNa 16
HieuDoan 20
NamL 17
我要選擇沒有重複數據的所有行,結果我需要:
Name Age
-------------
LinhNa 16
NamL 17
如何查詢呢?數據源是Redshift。
謝謝大家。
根據你的榜樣,而不是考慮的事實,使得這樣的查詢是錯誤的,因爲名稱和年齡可以是相同的不同的人,在甲骨文我會做這樣的事情,使用窗口功能
SELECT *
FROM
(SELECT A.*,
count(name) over (partition by name order by name) as cnt
FROM MY_TABLE A)
WHERE cnt = 1
試試這個嵌套查詢:
select name, age from (select *, count(*) as no from student group by name) where no = 1;
在sqlite3的,從我的實驗返回記錄集:
LinhNa|16
NamL|17
如果您只需選擇沒有重複數據的所有行,則可以採用以下方法。
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;
內查詢將返回name
,age
和count of names
和外部查詢會過濾掉與count=1
名稱。
以下是輸出。
您可以查看演示here
你嘗試過什麼?向我們顯示您的查詢 –
2人擁有相同的姓名很常見,您的要求背後的商務邏輯是什麼? – tibetty
也指定你正在使用的DBMS – Hatik