LEFT JOIN与可能存在或可能不存在的数据集

时间:2017-10-23 15:54:09

标签: mysql join

我正在尝试通过与其他2个数据集的左连接来加入主数据集,所有这些数据集都具有相同的关键字段。那里没什么特别的。 其中一个辅助数据集是另一个查询的结果,因此可能存在也可能不存在。显然,当该表不存在时,我的JOIN语句失败。

在真正简化的代码版本下面,JOIN用于排除表b或c中存在的table_a中的行(如果存在)。

SELECT                  a.id, a.name
FROM                    table_a  a
LEFT JOIN               table_b  b
 ON                     a.id = b.id
LEFT JOIN               table c  c
ON                      a.id = c.id
WHERE                   b.id IS NULL
 AND                    c.id IS NULL;

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但我认为你最好这样做:

SELECT a.id,a.name
FROM table_a a
WHERE a.id NOT IN
(SELECT id FROM table_b)
AND a.id NOT IN
(SELECT id FROM table_c)

任何查询优化器都应该具有与此请求完全相同的性能,并且我发现它更具可读性。