仅根据条件显示重复记录

时间:2016-07-19 14:58:52

标签: sql sql-server tsql

我的目标是在Identity列中找到重复项。我想只显示具有重复项的用户的身份和登录。这是我拥有的数据的一个例子:

http.formLogin().and().logout().addLogoutHandler(new LogoutHandler() {
            @Override
            public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
                response.setStatus(HttpServletResponse.SC_OK);
            }
        });

我希望展示类似的内容:

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

这将显示哪些用户具有按重复值排序的重复项。我在编写查询时遇到困难:a)只显示重复值,而b)也显示登录。运行COUNT似乎要求我也在登录时进行分组,这对于这种情况不起作用。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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;