繁体   English   中英

MySQL查询找到部分重复

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM