MySQL如何选择缺失值

时间:2017-04-05 17:23:59

标签: mysql sql

我有一个包含员工和任务的表,我想要一个缺少员工/任务组合的列表。

Bob  Gardening
Bob  Watering
Jane Gardening
Jane Digging

所以select会产生

Bob  Digging
Jane Watering

有什么建议吗?感谢

2 个答案:

答案 0 :(得分:0)

交叉联接可创建员工和任务的所有可能组合。使用NOT IN,您可以从此集合中减去所有现有员工/工作组合:

select e.employee, t.task
from employees e
cross join task t
where (e.employee, t.task) not in
(
  select employee, task
  from employees_tasks
);

答案 1 :(得分:0)

您需要将所有员工作为一个子查询,将所有任务作为一个子查询,然后进行交叉连接。完成后,给出如下所示的条件。

Select * from (
select a.employee,b.task from
(Select distinct employee from table) a, (select distinct task from table) b) where (employee,task) not in (select employee, task from table)