我的目标是在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似乎要求我也在登录时进行分组,这对于这种情况不起作用。
非常感谢任何帮助!
答案 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;