查找没有匹配结果SQL的所有行

时间:2013-01-02 17:01:04

标签: mysql select join left-join

我有一个表格,其中包含我公司员工的名字和姓氏,以及一个确定他们是否仍在为公司工作的字段。

我有另一张表,其中包含员工的任务列表 - 它还包含两个字段,其中包含员工的姓名( - 是的,我知道这不是一个好的结构)。

我希望能够找到所有仍在为公司工作但没有使用MySQL查询的任务的员工。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

SELECT *
FROM employees
WHERE still_working_for_company
AND NOT EXISTS (
  SELECT TRUE
  FROM tasks
  WHERE tasks.firstname = employees.firstname
  AND tasks.lastname = employees.lastname
)

答案 1 :(得分:0)

你可以试试这个 -

select * from FirstTable where firstTable.employee='yes' and 
     firstTable.empid IN (select secondTbl.empId where firstTable.empid = secondTbl.empId)

未对测试进行测试,并假设您的第二个表(任务表)仅在分配任务时包含员工数据。

答案 2 :(得分:0)

试试这个:

SELECT e.* 
FROM emp e 
LEFT JOIN emptask et ON e.firstname = et.firstname AND e.lastname = et.lastname 
WHERE e.stillworks = 'y' AND et.taskid IS NULL 
GROUP BY e.firstname, e.lastname