【问题标题】:SQL joining with empty table with "Not Equal To" operator使用“不等于”运算符与空表连接的 SQL
【发布时间】:2013-04-09 13:31:38
【问题描述】:

我有两张桌子 T1 和 T2

T1 列 id 和数据

具有列 id 和 T1_id 的 T2

我想加入 T1.id 和 T2.T1_id

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

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

问题是

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

我也喜欢 linq 等价物。

【问题讨论】:

    标签: c# sql sql-server join


    【解决方案1】:

    你已经接近你想要的了。 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;
    

    【讨论】:

      猜你喜欢
      • 2019-02-06
      • 2011-11-04
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多