【问题标题】:mySQL query select where not in another table [duplicate]mySQL查询选择不在另一个表中的位置[重复]
【发布时间】:2012-01-08 07:34:21
【问题描述】:

可能重复:
Mysql select where not in table

我需要从一个表 (t1) 中选择项目,但排除在另一个表 (t2) 中具有 id 且具有相同项目 ID 的任何结果。

SELECT * 
FROM t1 
WHERE project = 10 

需要排除 t2 中存在的任何行。

t1.userID = t2.memberID AND t2.projectID = t1.project

不知道如何把它们放在一起......

【问题讨论】:

标签: mysql sql


【解决方案1】:
SELECT t1.* 
FROM t1 
LEFT OUTER JOIN t2 ON t1.userID = t2.memberID AND t2.projectID = t1.project
WHERE t1.project = 10 and t2.projectID IS NULL

【讨论】:

  • 快于 NOT IN (select ...)
  • 我对 LEFT OUTER JOIN 的理解是,它将结合 t1 的结果,将它们与 t2 表中的列名结合起来,并将 t2 表中的每一列的值设置为 NULL。我只想从 t1 中选择值。如果项目 ID 在 t2 中匹配并且 usedIDs 匹配,则不要从 t1 中选择。我对此感到困惑吗?...
  • 好的,我编辑了查询以仅选择 t1 中的列。当连接中没有匹配项时,左外连接将第二个表中的所有列设置为 null。这些是我使用 where 子句的第二部分删除的行。
猜你喜欢
  • 2010-12-25
  • 2021-04-02
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 2018-01-21
相关资源
最近更新 更多