首页 > 解决方案 > 在表慢速性能中搜索重复项

问题描述

我试图找到fixtures表中可用的重复记录,所以我写了这个查询:

SELECT *
FROM fixtures f
INNER JOIN (SELECT *
           FROM fixtures s
           GROUP BY s.match_id
           HAVING COUNT(player_id) > 1) dup
       ON m.match_id = dup.match_id;

但是查询真的很慢,表中只有1000条记录。这是可用的记录:

player_id | match_id  | team_id
  19014       2506172    12573
  19014       2506172    12573
  19015       2506172    12573
  19016       2506172    12573
  19016       2506172    12573
  19016       2506172    12573

查询应该返回重复的 19016 和 19014 播放器,我做错了什么?

标签: sql

解决方案


如果您要在所有三列中寻找欺骗,我不明白您为什么需要加入。

SELECT player_id, match_id, team_id, count(*) 
FROM fixtures
GROUP BY player_id, match_id, team_id
HAVING COUNT(*) > 1

推荐阅读