3

我无法为这个问题生成查询。

我有这张小桌子

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 作为数据库。谢谢!

4

2 回答 2

6
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)
于 2013-07-11T19:43:33.347 回答
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 不会唯一标识员工。

于 2013-07-11T19:34:36.103 回答