用于查找共享完全相同的值集的对的SQL查询

时间:2013-07-11 19:31:45

标签: mysql sql relational-division

我无法为此问题生成查询。

我有这张小桌子

Tasks(employee_name, task)

Sample Data:
Tasks
------------------
Joe | taskA
Joe | taskB
Ted | taskA
Jim | taskB
Ray | taskA
Ray | taskB
John| taskA
Tim | taskC

我需要找到所有具有完全相同任务的员工。

例如,使用结果集上面的数据应为:

---------------------
employee1 | employee2
---------------------
  Joe     | Ray
  Ted     | John

我正在使用mySQL作为数据库。 谢谢!

2 个答案:

答案 0 :(得分:4)

select a.employee_name,b.employee_name
from tasks as a, tasks as b
where a.employee_name>b.employee_name
group by a.employee_name,b.employee_name
having group_concat(distinct a.task order by a.task)=group_concat(distinct b.task order by b.task)

答案 1 :(得分:0)

将表连接到自身,选择一个employee_name大于另一个,以及任务相等的位置。

select emp1.employee_name, emp2.employee_name, emp1.task
from tasks emp1
inner join task emp2
on emp1.employee_name > emp2.employee_name
and emp1.task = emp2.task

希望你有一个真正的PK,或者这只是一个示例练习。这在生产环境中并不好,因为employee_name不会在大多数公司/系统中唯一地标识员工。