mysql - SQL 查询从一个表中获取除另一表中的特定记录之外的所有记录(按日期)

标签 mysql left-join unions

我正在尝试从两个 MySql 表中选择记录。我想要第一个表中的所有记录,不包括第二个表中按日期排列的特定记录。例如:

表1 T1id名字姓氏
Table2 idT1id小时费率日期

T1id 是两个表之间的链接,因此当表连接时,我将拥有 T1id, firstName, lastName 小时费率日期

假设表2中有一条日期为2012-02-08的记录。通过一个查询,我需要从 Table1 中选择所有记录,排除 Table2 中日期为 2012-02-08 的记录。

我尝试了 JOINS 和 UNIONS 的一些变体,但是我要么获取所有记录、一堆重复记录,要么获取一条记录(即 Table2 日期)。我很抱歉,但我没有要包含的特定代码,因为没有任何内容对我有用。

最佳答案

很多时候,这通常是使用 NOT EXISTS 子查询来完成的,但子查询在较大的表中可能会带来很大的性能影响...但是,通过执行 LEFT JOIN 并查找 NULL 本质上是相同的结果

select
      t1.*
   from
      table1 t1
         left join table2 t2
            on t1.t2.t1id
          AND t2.date = '2012-02-08'
   where
      t2.t1id IS NULL

关于mysql - SQL 查询从一个表中获取除另一表中的特定记录之外的所有记录(按日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9193100/

相关文章:

MySQL 在 FIND_IN_SET() 中排除优于包含

当最大成员是原始类型时, union 是否可以大于最大成员?

带有 mysql 变量的 Mysql 查询在 Zend Framework 1 中不起作用

mysql - 将左连接限制为 1

mysql - 更新到 mysql 8 安装后 mysql gem 出现问题

MySQL排名查询和LEFT JOIN

c++ - 如何在模板与 union 之间继承?

澄清 C11 标准中的 union 示例

MySQL 错误 - 字段 'id' 没有默认值

php - 单击删除mysql行