mysql - 如何从一个表中选择第二个表中不存在的记录

标签 mysql join

我有两张 table 。

T1
IDWorker
姓名
姓氏

T2
IDWorker
月份
年份
因素

现在我必须获取给定月份和年份不在 T2 中的所有工作人员。

这是我的查询:

SELECT
  `T1`.`IDWorker`,
  `T1`.`Name`,
  `T1`.`LastName`,
  `T2`.`Month`,
  `T2`.`Year`
  `T2`.`Factor`
FROM
  `T1`
  LEFT JOIN `T2` ON `T1`.`IDWorker` = `T2`.`IDWorker`
WHERE
  `T2`.`Month` = 4 AND
  `T2`.`Year` = 2014 AND
  `T2`.`IDWorker` IS NULL;

运行此查询,我得到空结果,但排除月份和年份条件,我得到 worker 列表。我需要显示给定时间段内未输入 T2 的所有工作人员的结果。

最佳答案

我愿意

SELECT * FROM t1
WHERE IDWorker NOT IN (SELECT IDWorker 
                       FROM T2 
                       WHERE Month = 4 
                       AND Year = 2014)

关于mysql - 如何从一个表中选择第二个表中不存在的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23558223/

相关文章:

mysql - 在 JOIN 查询上使用 ORDER BY 进行排序

mysql - Spring Hibernate 无法在初始化数据库时添加外键约束

mysql - 使用 SQL 查询检索记录

php - 在从 MySQL 导出的 XML 中使用标签

mysql - SQL 语句返回应通过的步骤列表中的当前步骤以及进程是否已结束

sql - 当不需要第二个表中的数据时,JOIN 的效率是否比 EXISTS IN 更高/更低?

php - 如何在html主体中使用select选项值作为php sql语句同一页面中的变量

sql - 编写联接的更好方法

SQL 连接 3 个表(基于 2 个条件?)

mysql - 如何将数据插入到两个表中,且第一个表的 PK 未知?