在 LEFT JOIN 条件中使用 WHERE <>

Using WHERE <> in LEFT JOIN criteria

我想知道是否可以在 Left JOIN ON 条件上使用 WHERE <>。我希望这是有道理的。

这是脚本:

SELECT DISTINCT
      SLA.slxTELEMAGICID,
      sfAccount_Number__c = A.Account_Number__c,
      SLA.slxACCOUNTID,
      sfId = A.Id
      INTO #sfEXACTIVEACCOUNTS
        FROM #slxACTIVEACCOUNTS SLA
              LEFT JOIN ACCOUNT A
                ON SLA.slxTELEMAGICID = A.Account_Number__c
                WHERE SLA.slxTELEMAGICID is NULL OR SLA.slxTELEMAGICID ='N' OR SLA.slxTELEMAGICID <> A.Account_Number__c
                ORDER BY SLA.slxTELEMAGICID, A.Account_Number__c

上述脚本的问题是它似乎没有提取 SLA.slxTELEMAGICID <> A.Account_Number__c.

的记录列表

我不太明白你想要完成什么,你能详细说明一下吗?

您的左连接表示在 slxTELEMAGICIDaccount_number__c 上连接它们,但在您的 where 子句中您声明您还可以检索在连接子句中连接的两个记录不匹配 - 除非不满足此条件,因为它们已被连接过滤。

您的连接条件本身可以在连接中有多个条件,例如:

SELECT DISTINCT
      SLA.slxTELEMAGICID,
      sfAccount_Number__c = A.Account_Number__c,
      SLA.slxACCOUNTID,
      sfId = A.Id
  INTO #sfEXACTIVEACCOUNTS
  FROM #slxACTIVEACCOUNTS SLA
  LEFT JOIN ACCOUNT A ON SLA.slxTELEMAGICID = A.Account_Number__c
       OR SLA.slxTELEMAGICID is NULL 
       OR SLA.slxTELEMAGICID ='N' 
       OR SLA.slxTELEMAGICID <> A.Account_Number__c
  ORDER BY SLA.slxTELEMAGICID, A.Account_Number__c

虽然这看起来真的会 return 所有行不是吗?如果您加入 where slxTELEMAGICID = account_number__c 并且当它们不相等时,那就是一切,是吗? (可能保存空值)