我有一个表格,我想找出谁写了一个以上的比赛选手。有更多的专栏,但我看到的只有名字、姓氏、学校和竞赛。
我想在我的桌子上找到写了不止一个比赛的人,所以基本上相同的名字,相同的姓氏,相同的学校,但不同的比赛。有三个可能的比赛。
此外,每个参赛者都有一个参赛者id,这是主键。
编辑
我应该指定比赛必须等于我指定的3个比赛中的1个。这张桌子上可能有我不看的其他比赛的参赛者,即使是重复的名单也是有益的。所以如果它发现2个人符合标准,就会同时显示这两个人。
编辑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将匹配,但其他的将不匹配,因为名称与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

(AA)

10-07 19:19