我正在尝试通过与其他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;
答案 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)
任何查询优化器都应该具有与此请求完全相同的性能,并且我发现它更具可读性。