1

我有两张桌子 T1 和 T2

T1 与列 id 和数据

T2 列 id 和 T1_id

我想用 T2.T1_id 加入 T1.id

我想要 T1 的所有记录,其 id 不存在于 T2 中,即 T1.id <> T2.T1_id

因此,如果 T2 为空,则应获取 T1 的所有记录

问题是

  1. 如果我使用 LEFT join den,即使 T2 中存在具有相应 T1_id 的记录,也会获取 T1 id 的所有记录。
  2. 如果我不使用 Left join 一切正常,除非 T2 为空,否则不会获取任何记录

我也想要一个 linq 等价物。

4

1 回答 1

4

你已经接近你想要的了。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;
于 2013-04-09T13:33:13.887 回答