左连接排除匹配记录?

Left-join EXCLUDING matching records?

传统左连接 returns 从左边 table 开始的所有记录,包括匹配记录:

我想使用连接 排除 匹配记录,并且 return 仅从左侧排除不匹配的记录table:

下面显示的是我到目前为止想出的代码。
它使用 WHERE 子句来清除匹配记录 - 但不知何故感觉不对。
这是最好的方法吗?或者有什么更好的独占加入方式?

SELECT L.col1 ,
       L.col2 ,
FROM leftTable L
LEFT JOIN rightTable R ON R.col1 = L.col1
WHERE R.id IS NULL ;

LEFT JOIN方法可以。它在许多数据库中进行了优化。个人比较喜欢NOT EXISTS,因为我觉得更简洁:

SELECT L.col1, L.col2
FROM leftTable L
WHERE NOT EXISTS (SELECT 1 FROM rightTable R WHERE R.col1 = L.col1);

也就是说,逻辑在一个地方(NOT EXISTS 表达式)而不是分散在两个查询子句中。

Except解释

   Select * from table t LEFT JOIN 
     TABLE1 t1
   On t.id=t1.id
   Except
 SELECT * FROM TABLE1

使用左连接方法没有错,事实上它是标准方法,在某些情况下大多数人都遵循这种方法来排除记录和增量插入