我试图找出是否可以在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
的记录列表。
答案 0 :(得分:2)
我不太明白你想要完成的事情,你能详细说明吗?
您的左连接是在slxTELEMAGICID
和account_number__c
上声明加入他们,但在您的where子句中,您还可以检索您在join子句中加入的两个记录不匹配 - 除非这个条件不会被满足,因为它们已经被连接过滤掉了。
您的加入条件本身在联接中可以有多个条件,例如:
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
虽然这看起来真的会让所有行都归还吗?如果你加入slxTELEMAGICID = account_number__c
的地方以及他们不相等的地方,那么这一切都是吗? (保存可能为空)