web-dev-qa-db-ja.com

選択クエリから重複を排除するにはどうすればよいですか?

この質問をする前に、私はグーグルを使って検索しましたが、理解できなかったか、私の状況に適した解決策を見つけることができなかったかもしれません。

したがって、10列のテーブルが1つあり、selectの結果から重複を排除したいと思います。その結果、一意のユーザーIDを持つすべての列が表示されます。

 + ----------------------------------- + ------ +- -------------------- + ------ + 
 |名前|年|一部の列| userID | 
 + ----------------------------------- + --- --- + --------------------- + ------ + 
 | abc | 2000 | | 10 | 
 |ジャック| 2000 | | 11 | 
 |ダダス| 2000 | | 12 | 
 |ジャック| 2004年| ............. | 11 | 
 |ジャック| 2000 | ........... | 11 | 
 |ネル| 2006 | ............. | 13 | 
 | ...... | 2000 | ............. | 1 | 
 | ............. | 2000 | ............. | 2 | 
 |再び| 2000 | ............. | 3 | 
 |再び| 2000 | | 3 | 
 | ....... | 1973 | ............. | 2 | 
 | abc | 2000 | | 10 | 
10
Õzbek

異なる年を保持する必要がない場合は、DISTINCT ON(FIELD_NAME)を使用してください。

SELECT DISTINCT ON (userID) userdID, name, yr FROM TABLE_NAME
12
criticus

これを試してください:

SELECT * FROM TABLE_NAME GROUP BY userID
3

PostgreSQLおよびSQL Server 2005 +、DB2以降のバージョンのOracle(9+)の場合、ウィンドウ関数ROW_NUMBER()を使用できます。

select *
from
(
select *, ROW_NUMBER() over (partition by userID order by yr desc) rown
) X
where rown = 1
2
RichardTheKiwi

簡単なものは次のとおりです。

SELECT DISTINCT (userID) userdID, name, yr FROM TABLE_NAME
2
jash101