SQL连接与空表"Not Equal To"操作符

本文关键字:quot Equal To 操作符 Not 连接 SQL | 更新日期: 2023-09-27 18:08:28

我有两个表T1和T2

T1,列id &数据

T2 with columns id &T1_id

i想加入T1。id和T2。T1_id

我想要T2中id不存在的T1的所有记录也就是说,T1。id <> T2T1_id

所以如果T2为空,所有T1的记录都应该被取出

问题是

  1. 如果我使用左连接,那么T1 id的所有记录都将被获取,即使T2中存在T1_id对应的记录
  2. 如果我不使用左连接一切都在工作,除了T2是空的,那么没有记录被获取

SQL连接与空表"Not Equal To"操作符

你离你想要的很近了。LEFT JOIN就足够了,你的语句中唯一缺少的是WHERE子句条件。

SELECT  a.*
FROM    T1 a
        LEFT JOIN T2 b
            ON a.ID = b.T1_ID
WHERE   b.T1_ID IS NULL

LINQ版本:

var _result = from a in T1
              join b in T2 on a.ID equals b.T1_ID into b_join
              from b in b_join.DefaultIfEmpty()
              where b.T1_ID == null
              select a;