2016-07-19 39 views
0

我的目標是在「標識」列中查找重複項。我只想顯示重複用戶的身份和登錄信息。這是我擁有的數據的一個例子:根據標準僅顯示重複記錄

Id Login  Identity 
101 JamesT  15742 
102 SarahS  21789 
103 TonyP  15742 
104 LizB   23444 
105 EmmaT  14441 
106 ToniaL  14441 

我想說明是這樣的:

Login  Identity 
EmmaT  14441 
ToniaL  14441  
JamesT  15742 
TonyP  15742 

這將顯示哪些用戶可以通過重複的值排序重複。我在編寫查詢時遇到困難:a)僅顯示重複值,而b)還顯示登錄名。運行COUNT似乎要求我也對Login進行分組,這對於這種情況不起作用。

任何幫助,非常感謝!

回答

2

一種方法是使用窗口函數:

select t.* 
from (select t.*, 
      min(id) over (partition by identity) as minid, 
      max(id) over (partition by identity) as maxid 
     from t 
    ) t 
where minid <> maxid; 

上述查找兩個不同的ID。如果您只需要多行,請使用count(*)代替:

select t.* 
from (select t.*, 
      count(0) over (partition by identity) as cnt 
     from t 
    ) t 
where cnt > 1;