我有一个表格,我想找出谁写了一个以上的比赛选手。有更多的专栏,但我看到的只有名字、姓氏、学校和竞赛。
我想在我的桌子上找到写了不止一个比赛的人,所以基本上相同的名字,相同的姓氏,相同的学校,但不同的比赛。有三个可能的比赛。
此外,每个参赛者都有一个参赛者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)