[英]MySQL query to find partial duplicates
我有一张桌子,我想找出那些写了多个比赛的选手。 还有更多的列,但我正在查看的只有名字,姓氏,学校和竞赛。
我想在我的桌子上找到写了多个比赛的人,因此基本上相同的名字,相同的姓氏,相同的学校,但不同的比赛。 有3个可能的比赛。
同样,每个参赛者都有一个主键commitant_id。
编辑
我应该指定比赛必须等于我指定的3个比赛中的1个。 桌子上可能有其他我没有看过的比赛的参赛者,甚至列出重复项也会很有用。 因此,如果发现有两个符合条件的人,则同时显示两个人。
编辑2
一些示例数据...
| id | first_name | last_name | school | contest |
| 01 | Jane | Doe | 2568 | 1001 |
| 02 | Mike | Doe | 2568 | 1003 |
| 03 | Jane | Doe | 2568 | 1003 |
| 04 | Jane | Doe | 2523 | 1001 |
在此示例中,id 01和03将匹配,而其他ID将不匹配,因为名称与02不同,而school与04不同。
SELECT first_name,last_name,school,contest FROM table
WHERE contest IN ('blah','mah','wah')
GROUP BY first_name, last_name, school
HAVING COUNT(DISTINCT contest)>1
编辑
SELECT * FROM table t JOIN
(SELECT GROUP_CONCAT(id)as ids,first_name,last_name,school,contest FROM table
WHERE contest IN (1001,1002,1003)
GROUP BY first_name, last_name, school
HAVING COUNT(DISTINCT contest)>1)x
ON FIND_IN_SET(t.id,x.ids)>0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.