选择不在表格中的所有内容

时间:2013-07-06 17:02:42

标签: mysql select

我在MySQL中有一个表,列出了所有员工。我还有另一个列出所有员工的工作,这些员工必须在特定日期工作。现在我想选择所有免费(或至少未列在工作表中)的员工。 在此 fiddle 中,您可以看到我的架构。

SELECT * FROM pf_mitarbeiter WHERE NOT LISTED AS employeeID IN pf_tagesplan_zuteilungen这样的代码会非常棒。但我也会采用其他版本。

谢谢你们!

3 个答案:

答案 0 :(得分:2)

使用LEFT JOIN加入pf_tagesplan_zuteilungen employeeID,条件是没有符合pf_mitarbeiter的行:

SELECT t1.*
    FROM pf_mitarbeiter t1
    LEFT JOIN pf_tagesplan_zuteilungen t2 ON t2.employeeID = t1.ID AND t2.date = CURDATE()
    WHERE t2.ID IS NULL

答案 1 :(得分:1)

select *
from A
where not exists
(
   select 1
   from B
   where a.key = b.key
)

答案 2 :(得分:0)

使用LEFT OUTER JOIN加入这两个表。通过这样做,您可以从pf_mitarbeiter表中选择所有行,即使pf_tagesplan_zuteilungen表中没有相关行。

SELECT
  S.*
FROM
  pf_mitarbeiter S
  LEFT OUTER JOIN pf_tagesplan_zuteilungen T ON (S.ID = T.employeeID)
WHERE
  T.ID IS NULL
;

IS NULL条件限制联接仅返回pf_mitarbeiter行,其中没有pf_tagesplan_zuteilungen行且匹配的employeeId。